原因是:函数调用外部变量时构成了闭包,里面的变量会受到影响,所以声明成一个只有自己可以访问的闭包即可:
例:在点击每个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);
};
}
}