JavaScript在for循环中绑定事件解决事件参数不同的情况
2014-01-20 00:00
363 查看
有时候要对响应一堆相似的事件,但是每个事件的参数都不同,一开始还以为挺简单的,用个for循环不就得了,结果发现,额,都是使用了最后一个参数。。。
上网查资料!!!结果大神说用闭包解决
代码:
大概原因是直接用btns[i].onclick=function(){alert(i)}时,JavaScript引擎会先将for循环里的代码执行完,
当用户出发onclick事件时,JavaScript会寻找i,结果会找到运算完成之后的i,也就是10
但是用闭包处理的话,i会成为函数的局部变量
上网查资料!!!结果大神说用闭包解决
代码:
for(var i=0;i<10;i++){ btns[i].onclick=(function(i){ return function(){alert(i)} })(i) }
大概原因是直接用btns[i].onclick=function(){alert(i)}时,JavaScript引擎会先将for循环里的代码执行完,
当用户出发onclick事件时,JavaScript会寻找i,结果会找到运算完成之后的i,也就是10
但是用闭包处理的话,i会成为函数的局部变量
相关文章推荐
- JavaScript在for循环中绑定事件解决事件参数不同的情况
- javascript中绑定带参数的事件响应函数
- Javascript 事件对象(四)一个事件绑定多个不同的函数
- JavaScript为动态生成的标签绑定事件-参数
- javascript循环绑定事件,只返回最后一个实例,解决办法
- JS中使用for循环添加点击事件时,获取i值及参数异常原因及解决办法
- javascript事件绑定后this变义问题的解决[prototype1.5.1]
- js 利用闭包循环给li绑定参数不同的点击事件
- EventUtil是为了解决不同浏览器之间事件绑定的不同而自设的function
- JavaScript---事件绑定方式(传递参数)
- 【C#】解决那些参数不同的方法无法注册委托的情况
- javascript 冒泡 解决过多节点绑定事件的问题
- javascript事件绑定后this变义问题的解决[prototype1.5.1]
- JavaScript事件属性绑定带参数的函数
- JavaScript 在for循环中绑定事件
- layer 插件 取消按钮,关闭按钮 绑定不同事件
- 乱码 :javascript中uil带参数跳到action中接收 为乱码 解决
- 看懂此文,不再困惑于javascript中的事件绑定、事件冒泡、事件捕获和事件执行顺序