点击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>

原文地址:https://www.cnblogs.com/afafaa/p/12165754.html

时间: 2024-08-29 14:36:40

点击li获取下标的几种方式(原生JS实现)的相关文章

【Struts2】Struts2获取session的三种方式

1.Map<String,Object> map =  ActionContext.getContext().getSession(); 2.HttpSession session = ServletActionContext.getRequest().getSession(); 3.让Action实现SessionAware接口,并实现public void setSession(Map<String, Object> session) {} 方法,Struts2会在实例化Act

AngularJS中获取数据源的几种方式

在AngularJS中,可以从$rootScope中获取数据源,也可以把获取数据的逻辑封装在service中,然后注入到app.run函数中,或者注入到controller中.本篇就来整理获取数据的几种方式. ■ 数据源放在$rootScope中 var app = angular.module("app",[]); app.run(function($rootScope){ $rootScope.todos = [ {item:"",done:true}, {it

java中获取路径的几种方式

总是忘记, 备份一下,方便下次用. 第一种: File directory = new File("");//参数为空 String courseFile = directory.getCanonicalPath() ;System.out.println(courseFile); 结果:C:\Documents and Settings\Administrator\workspace\projectName获取当前类的所在工程路径; 第二种: File f = new File(th

java动态获取WebService的两种方式(复杂参数类型)

java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_FlightOrderSearchRequest request) { Object myAllMessage; OrderSearchListRes response = null; try { String endpoint = carGlobalSetting.getEndpoint(); JaxWsD

点击获取li下标的几种方式

应用闭包时回溯了下几种关于获取li下标的方式 1.点击获取li下标 ---- 闭包 2.点击获取li下标 ---- es6  let 3.点击获取li下标 ---- 给元素添加下标属性index 4.点击获取li  ---- 父级事件监听 思考了下,要获取下标,暂时只能想到添加下标的方法,因此未列出 遇到的问题 使用var 定义 i   结果显示超过下标的数值,轻率认为是冒泡问题,结果无果, 重新审查 知 即是先循环完毕  再执行的点击操作 原文地址:https://www.cnblogs.co

(转)使用JQuery获取对象的几种方式,值得收藏!

1.先讲讲JQuery的概念 JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队.其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代码实现一些复杂的JS效果.  2.JQuery实现了 代码的分离  不用再网页中加入如:onclick之类的事件来调用函数了,直接引入JQuery类库和自己编写的JQuery代码就可以了:  如:  $(function(){     $(

使用JQuery获取对象的几种方式

1.先讲讲JQuery的概念 JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队.其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代码实现一些复杂的JS效果. 2.JQuery实现了 代码的分离 不用再网页中加入如:onclick之类的事件来调用函数了,直接引入JQuery类库和自己编写的JQuery代码就可以了: 如: $(function(){ $("Element

Spring在代码中获取bean的几种方式(转:http://www.dexcoder.com/selfly/article/326)

方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObjectSupport 方法四:继承自抽象类WebApplicationObjectSupport 方法五:实现接口ApplicationContextAware 方法六:通过Spring提供的ContextLoader 获取spring中bean的方式总结: 方法一:在初始化时保存Applicati

struts2的action从request获取参数值的几种方式

使用jquery框架的ajax能够方便的向后台传递参数,以$.post为例,参数有2种方式字符串和键值对: $.post(url, "name=aty&age=25")和$.post(url, {"name":"aty","age":25}).显然,使用json的方式比使用字符串拼接要方 便.对于后台的action来说,这2种方式是等价的,而且jquery也提供了param.serialize.serialize能够实