使用闭包将变量i的值保护起来。
//sava1:加一层闭包,i以函数参数形式传递给内层函数 for( var i=0; i<ps.length; i++ ) { (function(arg){ ps[i].onclick = function() { alert(arg); }; })(i);//调用时参数 }
//save2:加一层闭包,i以局部变量形式传递给内存函数 for( var i=0; i<ps.length; i++ ) { (function () { var temp = i;//调用时局部变量 ps[i].onclick = function() { alert(temp); } })(); }
//save3:加一层闭包,返回一个函数作为响应事件 for( var i=0; i<ps.length; i++ ) { ps[i].onclick = function(arg) { return function() {//返回一个函数 alert(arg); } }(i); }
如果for循环中SetTimeOut中alert(i),结果为最大值