关于获得当前的index的方法

  每日一句English(start from today):

  In the previous section we just displayed a list of string entered statically in the Python code.(源于odoo的开发文档)。

翻译:在上一节中我们只显示一个列表的字符串输入静态的Python代码。(百度翻译)

    在群里看见有人问了关于,获得当前对象的index值得时候,我做了demo ,获得了当前的index,方法多种,下面我就用我的方法来讲解我的代码:

  模拟数据:div里面5个button

1 <div>
2         <button>1</button>
3         <button>2</button>
4         <button>3</button>
5         <button>4</button>
6         <button>5</button>
7 </div>下面就是关于取这个index的for循环代码:
<script>
        var obj = document.getElementsByTagName("button");
        for(var i = 0;i < obj.length;i++) {
            (function(i){
                obj[i].onclick = function(){
                    console.log(i);
                }
            })(i);
        }
</script>
  对于这个闭包需要讲解一下:可能大多数同学在不理解onclick的时候,就会发现他们获得值就是最后一个值,会写下这么的一串代码
for(var i = 0;i < obj.length;i++) {
	obj[i].onclick = function(){
	  console.log(i+1);
     }
}

  如图错误:

  

  onclick这个点击函数是异步执行的,也就是说在点击获得值得时候,循环已经结束,到达最后一个值,这时候i的值为5.所以,每次点击的时候,都是获得一样的值。因此,如果想获得里面的i的值的时候就需要将i值包裹起来,就需要用这样的闭包形式,函数自调传入当前的i。每次循环一次,就会让函数自调一次,输出当前的i.索引值是从0开始的,这里加1是想让他输出button的序号。正确所示:

  

  顺便附上关于jq的写法:这里就不用考虑闭包了,都在jq的index这个方法包裹在里,有兴趣的同学可以去找这段jq的源码,来看看这个index的方法是怎么样封装的。

$("button").click(function(){
     var index = $("button").index(this);
     console.log(index);
 })

  具体关于闭包的详细解析:我会在在下篇 【闭包的理解】,详细讲解我对于闭包的理解。

  谢谢浏览!

时间: 2024-10-25 06:38:59

关于获得当前的index的方法的相关文章

thinkPHP隐藏url地址栏中的index.php方法

http://localhost/workSpace/First/index.php/Home/Index/index隐藏上面url中的index.php方法如下: 第一步.删除apache配置文件(httpd.conf)中以mod_rewrite.so结尾行前的#号第二部.在index.php文件同级目录下新建.htaccess文件文件内容如下:<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME}

[ jquery 过滤器 .eq( index | -index ) ] 此方法用于在选择器的基础之上精确筛选出第N个元素

此方法用于在选择器的基础之上精确筛选出第N个元素,参数解析如下: 1.index:一个整数,指示元素基于0的位置,这个元素的位置是从0算起 2.-index:一个整数,指示元素的位置,从集合中的最后一个元素开始倒数.(1算起) 实例: <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description

C# foreach 中获取索引index的方法

在C# 开发中往往使用foreach 循环语句 来代替for循环语句.foreach 比 for 更加简洁高效. foreach : foreach (var item in arr) { item ..... } for : for(int i = 0; i { arr[i]..... } 显然 for语句直接就存在索引变量,通过索引获取值. 但在实际操作中,使用foreach 有时需要用到索引. 要获取foreach的索引值,因为没有直接的索引值,人们最容易想到的解决方法是在foreach语

ThinkPHP在Apache和Nginx下去除index.php方法

由于项目需要,用ThinkPHP开发的程序链接要去除index.php下面说下如何解决. 一.Nginx方法 由于nginx不支持PATH_INFO,所以需要进入linux终端找到nginx 的配置文件nginx.conf添加如下代码: 123456 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } 使用如下: 1234567891011121314151617181

【IDEA】idea一直不停的scanning files to index 解决方法

参考文章:https://blog.csdn.net/libusi001/article/details/102800605 scanning files to index 扫描文件建立索引 方法一.File -> Invalidate Caches / Restart 方法二.删除C:\Users\xxx\.IntelliJIdea2018.2\system文件夹 方法三.将扫描的文件夹排除在建立索引的范围之外,即将xxx文件夹标记为Excluded. 方法四.更改Edit Configura

[ jquery 选择器 :gt(index) ] 此方法选取匹配大于指定索引值的所有元素

此方法选取匹配大于指定索引值的所有元素:角标值从0开始计数 <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='keyword1,keyword

[ jquery 选择器 :lt(index) ] 此方法选取匹配小于指定索引值的所有元素

此方法选取匹配小于指定索引值的所有元素:从 0 开始计数 <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='keyword1,keyword2

ThinkPHP 5隐藏public/index.php方法

1.复制public下的index.php与.htaccess文件至根目录: 2.直接修改index.php,将内容修改为:<?php require 'public/index.php'; ?> 3.访问(你的域名)yourdomain即可成功: 原文地址:https://www.cnblogs.com/zw0718/p/10290867.html

通过names.index()的方法返回2个eva的索引值

names = ["金角大王","黑姑娘","rain","eva","狗蛋","银角大王","eva","鸡头"]eva_1 = names.index("eva")new_list = names[eva_1+1:]new_eva = new_list.index("eva")eva_2 = eva_1