for循环 添加点击事件时 出现总是加到最后一个元素上的问题

原因是:函数调用外部变量时构成了闭包,里面的变量会受到影响,所以声明成一个只有自己可以访问的闭包即可:

例:在点击每个div时 弹出对应序号,但是却总是弹出最后一个元素时 ,可以修改成这样:

window.onload = function(){

var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++) {
getConsole(i);
}


function getConsole(i){
divs[i].onclick = function() {
alert(i);
};
}
}

 

posted @ 2017-03-07 15:35  RitaLee  阅读(1266)  评论(0编辑  收藏  举报