zoukankan      html  css  js  c++  java
  • 闭包的使用 — 点击列表项输出项目索引

    <ul id="list">
        <li>序号1</li>
        <li>序号2</li>
        <li>序号3</li>
        <li>序号4</li>
        <li>序号5</li>
        <li>序号6</li>
        <li>序号7</li>
        <li>序号8</li>
        <li>序号9</li>
        <li>序号10</li>
    </ul>
    
    var list = document.getElementsByTagName('li');
    var listLen = list.length;
    
    // 错误写法
    for(var i=0;i<listLen;i++) {
      list[i].onclick = function () {
        // 每次输出都是10
        console.log(i);
      }
    }
    
    // 使用闭包一
    for(var i=0;i<listLen;i++) {
      function msg(n){
        list[n].onclick = function () {
          console.log(n+1);
        }
      }
      msg(i);
    }
    msg = null;
    
    // 使用闭包二
    for(var i=0;i<listLen;i++) {
      (function msg(n) {
        list[n].onclick = function () {
          console.log(n+1);
        }
      })(i);
    }
    msg = null;
    
    // 非闭包,使用属性进行保存
    for(var i=0;i<listLen;i++) {
      list[i].i = i;
      list[i].onclick = function () {
        // 不能写成list[i].i
        console.log(this.i+1);
      }
    }
    
    $(function () {
      var li = $('li');
      // jquery写法
      li.click(function () {
        console.log($(this).index()+1);
      });
    });
  • 相关阅读:
    php7安装Memcached扩展
    php7安装
    结束进程
    openssl 编译
    boost 编译
    php 与 c++ openssl 加密通信
    iptables 端口转发
    获取进程及父进程的两种方式
    windows 下获取父进程pid
    CentOS 64位系统 yum安装32位软件包的方法
  • 原文地址:https://www.cnblogs.com/wx1993/p/5903083.html
Copyright © 2011-2022 走看看