for循环输出i为同一值的问题
Posted 佳琪欧尼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了for循环输出i为同一值的问题相关的知识,希望对你有一定的参考价值。
使用闭包将变量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循环输出i为同一值的问题的主要内容,如果未能解决你的问题,请参考以下文章