zoukankan      html  css  js  c++  java
  • 点击li获取下标的几种方式(原生JS实现)

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>点击li获取下标的几种方式</title>
    </head>
    <body>
      <h1>点击li获取下标的几种方式</h1>
      <ul>
        <li>红的</li>
        <li>蓝的</li>
        <li>紫的</li>
        <li>绿的</li>
        <li>白的</li>
        <li>黄的</li>
        <li>黑的</li>
      </ul>
      <script>
        var list = document.querySelectorAll('li')
    
        // 第一种:for循环获取下标i
        // for (var i = 0; i < list.length; i++) {
        //   list[i].index = i // 自定义属性发编号
        //   list[i].onclick = function () {
        //     console.log(this.index)
        //   }
        // }
    
        // 第二种:let的块级作用域属性获取到的是每个独立i
        // for (let i = 0; i < list.length; i++) {
        //   list[i].onclick = function () {
        //     console.log(i)
        //   }
        // }
    
        // 第三种:伪数组转数组forEach遍历
        // Array.from(list).forEach(function (li, index) {
        //   li.onclick = function () {
        //     console.log(index)
        //   }
        // })
    
        // 第四种:每个闭包都有一个自己的index
        for (var i = 0; i < list.length; i++) {
          // 立即执行函数把i作为实参,传递进去了,index接收,在内层函数里使用
          // 每个事件都构成了一个闭包,每个闭包里都有一个自己的index
          list[i].onclick = (function (index) {
            return function () {
              console.log(index)
            }
          })(i)
        }
      </script>
    </body>
    </html>


  • 相关阅读:
    【注册验证】 控制器(添加数据+后台验证)
    AJAX 简介
    我的博客生涯
    windows xp sp3 下载地址
    get、set、add、remove → (字段、属性)+(委托、事件)
    ArcObjects整体介绍
    委托
    对字符串的处理的又一个强大的工具,正则表达式
    对象序列化存在的原因
    关于文件操作的几个类
  • 原文地址:https://www.cnblogs.com/afafaa/p/12165754.html
Copyright © 2011-2022 走看看