首页 > 编程 > JavaScript > 正文

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

2019-11-20 08:56:54
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表