因为i 是全局作用域的,当循环结束后 i 的值是 6,所以输出的 i 就是6。
var liList = ul.getElementsByTagName('li');
for (var i = 0; i < 6; i++) {
liList[i].onclick = function () {
alert(i) // alert 出来的总是 6,而不是 0、1、2、3、4、5
}
};
使用立即执行函数可以解决这个问题。
var liList = ul.getElementsByTagName('li');
for (var i = 0; i < 6; i++) {
(function(j){
liList[j].onclick = function () {
alert(j) // alert出来的 0、1、2、3、4、5
}
})(i)
};