You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS点击切换class脚本失效,报addEventListener is not a function错误排查

错误原因

document.querySelectorAll('.clothes__item-favorite') 返回的是NodeList类数组对象,包含所有匹配类名的DOM元素集合,本身不具备addEventListener方法,只有单个DOM元素才能调用该方法绑定事件,因此直接对集合调用方法就会触发该报错。

解决方案

根据使用场景二选一即可:

场景1:页面仅存在1个目标圆形元素

直接将querySelectorAll替换为querySelector,querySelector会返回匹配的第一个单个DOM元素,修改后的JS代码如下:

const favorite = document.querySelector('.clothes__item-favorite');

favorite.addEventListener('click', function() {
    // 用this指向当前触发点击事件的元素,逻辑更通用
    this.classList.toggle("favorite--active");
});

场景2:后续可能存在多个相同类名的圆形元素

遍历querySelectorAll返回的NodeList集合,给每个元素单独绑定点击事件:

const favoriteList = document.querySelectorAll('.clothes__item-favorite');

favoriteList.forEach(item => {
    item.addEventListener('click', function() {
        this.classList.toggle("favorite--active");
    });
});

修改后即可实现需求:点击圆形元素添加favorite--active类变为红色,再次点击移除该类恢复原始白色样式。


内容的提问来源于stack exchange,提问作者Эльшан Намазов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:45:04