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";}
};
}
上面那种是匿名函数的创建并调用,你改的东西就算是个匿名函数但是也缺少个调用,稍作调整就可以使用,下面给你几个调整解决方案
方案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)就是对这个匿名函数的调用
}
第二种形式缺少函数名。