关于JS中用classname获取元素改变样式时效果怪异的原因

        在编辑html页面时,我们有时候需要对很多个同一类名的元素进行更改样式,如更改点赞或收藏的样式,如果用classname来获取的话在操作时应该注意一下操作。

        如果按照这种方式添加监听器的话,在有很多个“dzz”的情况就会出现只能按顺序点击使dzz变黄或其他怪异情况,因为这些“dzz”公用一个classname,这种情况就会使在JS中定义的dzzElements变成一个数组,而不是一个元素,但如果是id获取的话就是一个元素。

 var dzzElements = document.getElementsByClassName("dzz");
dzzElements.addEventListener("click", function () {
                    this.style.color = "yellow"; 
                });

        下面是改进方法

var dzzElements = document.getElementsByClassName("dzz");
            // 对每个具有类名"dzz"的元素添加点击事件监听器
            for (var i = 0; i < dzzElements.length; i++) {
                dzzElements[i].addEventListener("click", function () {
                    this.style.color = "yellow"; // 使用this指向当前被点击的元素
                });
            }

通过遍历dzzElements中的每一个dzz并添加监听器就能按任意顺序触发监听器中的函数

以上就是一个小分享,觉得有用的话就点个赞吧

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值