zoukankan      html  css  js  c++  java
  • 遍历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()); // ?

     
    复制代码
  • 相关阅读:
    Django---Blog系统开发之注册页面(验证码&ajax发送文件)
    Django---Blog系统开发之建库
    Eclipse下导入外部jar包的3种方式
    linux 下 .sh 文件语法
    热备,冷备,云备的区别
    plsql 中如何清除曾经登录过的用户名
    Mac 查看python安装路径
    mac terminal终端怎么退出python命令行
    PyCharm 2017 Mac 免注册版破解安装说明
    PL/SQL恢复默认窗口样式
  • 原文地址:https://www.cnblogs.com/yzhihao/p/6425464.html
Copyright © 2011-2022 走看看