页面刚加载 for 循环就走完了,点击事件是在 for 循环走完之后才执行的.
for 循环的作用是给数组中的每个元素都添加点击事件, for循环走完不会对点击事件产生影响,还有i 就是为length,所以就有了这一段代码 set_array[i].index = i; 作用就是记录每次循环 i 的值
问题:
window.onload = funtion(){
var lis = document.getElementsByTagName('li');
for( var i = 0; i < lis.length; i ++ ){
lis[i].onclick = function(){
console.log(i);//当我们点击面页里的li时候 i 总是等于lis.length
};
}
};
闭包解决
window.onload = function(){
var lis = document.getElementsByTagName('li');
for( var i = 0; i < lis.length; i++ ){
(
function (n){
lis[n].onclick = function(){
console.log( i + '-' + n );//i总是等于长度,而n则是安装顺序
};
}(i)
);
}
};
let方法
for (var i=0;i<2 ;i++)
{
let k=i; //const也可以,块级作用域
var bt=document.getElementById('bt');
bt.οnclick=function(){
console.log(k);
};
}
第三种方法
window.onload = funtion(){
var lis = document.getElementsByTagName('li');
for( var i = 0; i < lis.length; i ++ ){
lis[i].setAttribute('index',i);
lis[i].onclick = function(){
console.log( this.index );//每个li对应有着自己的索引值,也就可以判断出是什么时
};
}
};