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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
实测jquery data()如何存值
Aug 18 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
Mar 06 Javascript
JS优化与惰性载入函数实例分析
Apr 06 Javascript
vue中SPA单页面应用程序详解
Nov 07 Javascript
详解webpack+express多页站点开发
Dec 22 Javascript
vue+vue-router转场动画的实例代码
Sep 01 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
Sep 18 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
javascript如何实现create方法
Nov 04 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 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
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
Symfony生成二维码的方法
2016/02/04 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
详谈js模块化规范
2017/07/07 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
Python中asyncore的用法实例
2014/09/29 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
python如何实现视频转代码视频
2019/06/17 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
如何理解python对象
2020/06/21 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
什么是SCM(软件配置管理)
2014/08/16 面试题
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
环境建议书
2015/02/04 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python