Js实现点击同类型标签,输出第几个标签

本文探讨了在JavaScript中如何使用匿名函数自执行解决事件处理中的变量作用域问题,通过实例展示了点击不同元素时正确获取元素下标的方法,同时介绍了设置自定义属性作为替代方案。

匿名函数自执行

一般来说,我们写这样一段代码,因为事件异步,所以每次点击都打印n(lis的长度),因为你点击的时候,因为点击事件是异步的,所以他并不会影响 i 的自增,所以当点击的时候,i已经自增结束了。

    var lis = document.getElementsByTagName('li');
    for(var i=0;i<lis.length;i++){
    	lis[i].onclick = function(){
                console.log(i);
        }
        };
    }

而现在我们想要的效果是,点击第几个li就显示几,可以使用匿名函数自执行来实现,匿名函数自执行有很多种形式,给函数在外面加一个(),前面加符号+、~、!这三种也都可以,这里写一种,

// 
 var lis = document.getElementsByTagName('li');
    for(var i=0;i<lis.length;i++){
        (function(i){
            lis[i].onclick = function(){
                console.log(i);   
            };
        })(i);
    }

此时你再点击每一个li就是显示li的下标,从0开始,从1开始,打印i+1即可。
这时是相当于n(lis的长度)次调用了匿名函数,每次i都是一个参数传入匿名函数中。

//匿名函数形式
    (function(){
        console.log(123);
    })(); 

    +function(){   
        console.log(123);
     }();

    ~function(){   
         console.log(123);
     }();

     !function(){    
         console.log(123);
     }();

添加自定义属性

当然也有很多别的方法,比如你可以给li设置属性,保存下它的下标值,然后每次点击输出他的下标值

        for(var i=0;i<lis.length;i++){    
            lis[i].index= i;
                lis[i].onclick = function(){   
                    console.log(this.index);                    
                };
        }

设置属性是比较通用,便于理解的方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值