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 相关文章推荐
Extjs学习笔记之一 初识Extjs之MessageBox
Jan 07 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
Jan 02 Javascript
JavaScript中使用自然对数ln的方法
Jun 14 Javascript
jquery图片轮播特效代码分享
Apr 20 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
JSON键值对序列化和反序列化解析
Jan 24 Javascript
五步轻松实现zTree的使用
Nov 01 Javascript
解决vue admin element noCache设置无效的问题
Nov 12 Javascript
js实现踩五彩块游戏
Feb 08 Javascript
微信小程序实现轮播图指示器
Jun 25 Javascript
ECharts transform数据转换和dataZoom在项目中使用
Dec 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字符串过滤与替换小结
2015/01/26 PHP
php类的定义与继承用法实例
2015/07/07 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
基于jquery的Repeater实现代码
2010/07/17 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
深入讲解Java编程中类的生命周期
2016/02/05 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
股东合作协议书
2014/09/12 职场文书
保留意见审计报告
2015/06/05 职场文书
学雷锋感言
2015/08/03 职场文书
新兵入伍决心书
2015/09/22 职场文书
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers