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);
};
}
}

原文地址:https://www.cnblogs.com/RitaLee/p/6515048.html