为了账号安全,请及时绑定邮箱和手机立即绑定

这段js循环代码addEventListener为什么会错误?

这段js循环代码addEventListener为什么会错误?

慕莱坞森 2019-03-13 10:15:02
// 这个代码是错误的,因为变量i从来就没被locked住// 相反,当循环执行以后,我们在点击的时候i才获得数值// 因为这个时候i操真正获得值// 所以说无论点击那个连接,最终显示的都是I am link #10(如果有10个a元素的话)var elems = document.getElementsByTagName('a');for (var i = 0; i < elems.length; i++) {    elems[i].addEventListener('click', function (e) {        e.preventDefault();        alert('I am link #' + i);    }, 'false');};它为什么没有在点击第i个链接时,显示I am link #i
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

刚好我也在解决闭包问题


var ps=document.getElementsByTagName("p");

for (var i = 0; i < ps.length; i++) {


ps[i].addEventListener("click",(function(num){

    return function(){

       alert(num);

    };

})(num));

}

刚测试出来的。


查看完整回答
反对 回复 2019-04-14
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

把for循环中的var改成let


查看完整回答
反对 回复 2019-04-14
  • 3 回答
  • 0 关注
  • 655 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号