JS遍历ul下的li点击弹出li的索引的实现方法


Posted in Javascript onSeptember 19, 2016

首先我们需要一个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()); // ?
console.log(counter1);
console.log(counter1.get()); // 0
console.log(counter1.set(3)); // 3
console.log(counter1.increment()); // 4
console.log(counter1.increment()); // 5

以上所述是小编给大家介绍的JS遍历ul下的li点击弹出li的索引,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 自动完成脚本整理(33个)
Oct 20 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
Sep 29 Javascript
jQuery中delegate()方法用法实例
Jan 19 Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 Javascript
jQuery实现图片向左向右切换效果的简单实例
May 18 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
Aug 19 Javascript
如何使用 vue + d3 画一棵树
Dec 03 Javascript
如何在Angular应用中创建包含组件方法示例
Mar 23 Javascript
在Vuex中Mutations修改状态操作
Jul 24 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 #Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 #Javascript
详解Node.Js如何处理post数据
Sep 19 #Javascript
React Native实现简单的登录功能(推荐)
Sep 19 #Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
Sep 19 #Javascript
BootStrap入门教程(二)之固定的内置样式
Sep 19 #Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 #Javascript
You might like
PHP个人网站架设连环讲(二)
2006/10/09 PHP
php intval的测试代码发现问题
2008/07/27 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
用Python制作简单的钢琴程序的教程
2015/04/01 Python
用Python生成器实现微线程编程的教程
2015/04/13 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
批处理与python代码混合编程的方法
2016/05/19 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python计算二维矩形IOU实例
2020/01/18 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
python中字典增加和删除使用方法
2020/09/30 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
八项规定整改方案
2014/02/21 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
年终晚会活动方案
2014/08/21 职场文书
食品药品安全责任书
2015/05/11 职场文书
2019思想汇报范文
2019/05/21 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
聊聊Python String型列表求最值的问题
2022/01/18 Python