js函数调用问题

来源:8-17 编程练习

笨小孩日记

2016-04-30 01:46

for(var i=0;i<objTr.length;i++){


    (function(i){


        objTr[i].onmousemove=function(){objTr[i].bgColor="red";}


objTr[i].onmouseout = function(){objTr[i].bgColor = "white";}


}(i));


}  

将其改成以下形式,为什么就不能执行了??

for(var i=0;i<objTr.length;i++){


    function(i){


        objTr[i].onmousemove=function(){objTr[i].bgColor="red";}


objTr[i].onmouseout = function(){objTr[i].bgColor = "white";}


};


}  


写回答 关注

2回答

  • kuban
    2016-05-01 21:51:29
    已采纳

    上面那种是匿名函数的创建并调用,你改的东西就算是个匿名函数但是也缺少个调用,稍作调整就可以使用,下面给你几个调整解决方案

    方案1是不用匿名函数

    for(var i=0;i<objTr.length;i++){


        function a(i){


            objTr[i].onmousemove=function(){objTr[i].bgColor="red";}


    objTr[i].onmouseout = function(){objTr[i].bgColor = "white";}


    }

    a(i);//调用

    }  

    方案2,继续用匿名函数的其他用法

    for(var i=0;i<objTr.length;i++){


       void function(i){//void可以换成~  +  - !这几种符号,依然有效


            objTr[i].onmousemove=function(){objTr[i].bgColor="red";}


    objTr[i].onmouseout = function(){objTr[i].bgColor = "white";}


    }(i);//尾巴上这个(i)就是对这个匿名函数的调用

    }  


    笨小孩日记

    非常感谢!

    2016-05-08 17:24:53

    共 1 条回复 >

  • _Xthanus_
    2016-04-30 03:08:19

    第二种形式缺少函数名。

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题