问:for循环里加click事件,都是最后一个i的生效,而且都是同一个。
答:for内部的onclick,这是最最最最最常见的闭包,也是初学的人最容易发生的。,以下供参考
//方法一:错误的方式
for(var i=0;i<btn.length;i++){
btn[i].onclick=function(){
alert(i)
}
}
//方法二:
for(var i=0;i<btn.length;i++){
(function(j){
btn[j].onclick=function(){
alert(j)
}
})(i)
};
实测,方法2可行,达到我的目的。
扩展:其实2用了()(i)这样的js立即执行函数的知识,这属于js高级进阶部分的东东!用来解决这个问题,再好不过了。
兼容性反正在Chrome下可通过!