首页 > 代码库 > 使用for循环添加点击事件时,获取i值的方法
使用for循环添加点击事件时,获取i值的方法
比如页面上有一个ul,数个li,现在给li添加点击事件。
var li = document.getElementsByTagName("li"); for(var i = 0; i < li.length; i++) { li[i].addEventListener("click",function () { console.log(i); }) }
但是,这样写之后我们发现,点击任何一个li,打印的值都为5,这是因为闭包中共用i值,而i的值由于执行for循环,都变为了5
为了正常显示i值,我们可以使用如下方法:
for (var i = 0; i < lis.length; i++) { (function(arg){ li[arg].onclick = function(){ console.log(arg); }; })(i) }
类似于这样
var li = document.getElementsByTagName("li"); for(var i = 0; i < li.length; i++) { getConsole(i); } function getConsole(i){ li[i].addEventListener("click", function() { console.log(i); }); }
使用for循环添加点击事件时,获取i值的方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。