遍历ul下的li,点击弹出li的索引

首先我们需要一个html结构

  <div >
        <ul>
            <li>a</li>
            <li>a</li>
            <li>a</li>
            <li>a</li>
            <li>a</li>
        </ul>
    </div>

我们遍历ul 下所有的li 并添加点击事件,一般我们会在for循环里面添加点击事件,但是结果和我们所期盼不一样,那么是为什么呢????

接下来看看我们的js代码

   var li = document.getElementsByTagName('li');
        for(var i = 0;i<li.length;i++){       
            (function(Index){
                li[i].addEventListener('click',function(e){
                    alert('I am link #'+ Index );
                },false);
            })(i)
       }

我们实现了!!!

这样就是得来我们想要的效果点击相应的li得来相应的索引。

简单说一下实现的过程吧

(function () { /* code */ } ()); // 推荐使用这个
(function () { /* code */ })(); // 但是这个也是可以用的

这是我整理立调函数或自执行函数;

本质上我们是利用闭包的原理实现弹出的索引,我们立调函数传一个参数Index,也就是我们的索引i,在函数里面实现了闭包,

Index会一直保留在作用域块内,这样我们再点击的时候,会调用作用域名内保存的索引,从而实现我们需要的功能;

 

我们几个简单的例子

    function num(){
            var i = 0;
            return function(){
                console.log(i++);
            }
        }
        var counter = num();
        console.log(counter()); // 0
     console.log(counter()); // ??
 

 

      var counter1 = (function(){
            var i = 0;
            
            return {
                get:function(){
                    return i;
                },
                set:function(val){
                    i = val;
                },
                increment:function(){
                    return ++i;
                }
            }
        }());
    

    console.log(counter1);
    console.log(counter1.get()); // ?
    console.log(counter1.set(3)); // ?
    console.log(counter1.increment()); // ?
    console.log(counter1.increment()); // ?

 

 

1                 console.log(counter1);
2         console.log(counter1.get()); // 0
3         console.log(counter1.set(3)); // 3
4         console.log(counter1.increment()); // 4
5         console.log(counter1.increment()); // 5
View Code

 

转载于:https://www.cnblogs.com/pangzi666/p/5884509.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值