// 这个代码是错误的,因为变量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));
}
刚测试出来的。
添加回答
举报
0/150
提交
取消