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 相关文章推荐
在textarea文本域中显示HTML代码的方法
Mar 06 Javascript
学习ExtJS Column布局
Oct 08 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
Jan 21 Javascript
上传的js验证(图片/文件的扩展名)
Apr 25 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
js实现可键盘控制的简单抽奖程序
Jul 13 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
Vue.js组件tree实现无限级树形菜单
Dec 02 Javascript
jQuery实现限制文本框的输入长度
Jan 11 Javascript
js实现自动轮换选项卡
Jan 13 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 13 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
Terran热键控制
2020/03/14 星际争霸
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
第七节 类的静态成员 [7]
2006/10/09 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
ES6学习教程之块级作用域详解
2017/10/09 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
Django migrations 默认目录修改的方法教程
2018/09/28 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
医院护士的求职信
2014/01/03 职场文书
少先队入队活动方案
2014/02/08 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
售房协议书范本2014
2014/10/23 职场文书
特岗教师个人总结
2015/02/10 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android
Java使用HttpClient实现文件下载
2022/08/14 Java/Android