js---点击li输出当前li的索引号

本文探讨了如何在JavaScript中动态为元素添加属性,通过示例展示了使用for循环为li元素添加自定义属性index,并实现点击事件监听。同时,解释了利用闭包解决循环中变量作用域问题,确保在点击事件中正确获取当前li元素的index值。这种方法对于理解和优化JavaScript代码的执行逻辑至关重要。
摘要由CSDN通过智能技术生成

1.动态添加属性的方法

<body>
    <ul>
        <li>星期1</li>
        <li>星期2</li>
        <li>星期3</li>
        <li>星期4</li>
        <li>星期5</li>
    </ul>
</body>

<script>
    var lis = document.querySelectorAll('li');
    for (var i = 0; i < lis.length; i++) {
        //添加自定义属性index
        lis[i].index = i;
        lis[i].onclick = function() {
            //console.log(i);//这种输出的i都是5
            console.log(this.index);//打印当前li的index
        }
    }
</script>

2.利用闭包的方式

// 立即执行函数也称为小闭包因为立即执行函数里面的任何一个函数都可以使用它的i这个变量
var lis = document.querySelectorAll('li');
for (var i = 0; i < lis.length; i++) {
//利用for循环创建了5个立即执行函数
    (function(j) {
        lis[j].onclick = function() {
            console.log(j); //打印当前li的i
        }
    })(i);   
}
//这里改变了i的作用域(以前是全局变量,现在作为实参传递给变量j)
//在内存中开辟了一个内存空间存储了作为参数传进来的i的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值