js循环中onclick事件问题

页面刚加载 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对应有着自己的索引值,也就可以判断出是什么时
        };
    }
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值