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 相关文章推荐
jquery之Document元素选择器篇
Aug 14 Javascript
javascript优先加载笔记代码
Sep 30 Javascript
javascript XMLHttpRequest对象全面剖析
Apr 24 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
Jul 11 Javascript
Google 静态地图API实现代码
Nov 19 Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 Javascript
通过Javascript创建一个选择文件的对话框代码
Jun 16 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
Jul 21 Javascript
浅谈JavaScript的计时器对象
Dec 26 Javascript
Vue from-validate 表单验证的示例代码
Sep 26 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
详解JavaScript中的this指向问题
Feb 05 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中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
PHP中文乱码解决方案
2015/03/05 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
Js组件的一些写法
2010/09/10 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
python基础教程之常用运算符
2014/08/29 Python
Python中元组,列表,字典的区别
2017/05/21 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
如何理解python面向对象编程
2020/06/01 Python
python读取xml文件方法解析
2020/08/04 Python
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
租车协议书
2015/01/27 职场文书
Java实现注册登录跳转
2022/06/16 Java/Android