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

为什么使用querySelectorAll获取元素后调用addEventListener会报不是函数的错误?

报错原因
  • document.querySelectorAll() 方法返回的是NodeList类数组集合,并非单个DOM元素,该集合本身没有内置addEventListener方法,只有单个DOM节点才支持调用该方法绑定事件。
  • 选择器规则使用错误:你用[image]、[score]这种属性选择器,匹配的是带有image、score自定义属性的元素,但你的HTML代码中对应元素是用class="image"、class="score"标注的,现有选择器无法匹配到任何DOM节点,就算修改绑定逻辑也不会生效。
  • 你的HTML代码存在大量截断问题,比如div闭合标签写成</di,head区的meta、script、link标签均不完整,实际运行时也会引发页面加载异常。
修复方案

首先修改JS代码如下:

// 把属性选择器改为类选择器,正确匹配对应DOM元素
const score = document.querySelector(".score");
const imageList = document.querySelectorAll(".image");

// 遍历NodeList集合,给每个图片元素单独绑定点击事件
imageList.forEach(image => {
  image.addEventListener("click", () => {
    // 优化分数逻辑:转数字累加,避免字符串拼接出现"1111"这类异常展示
    score.innerHTML = Number(score.innerHTML || 0) + 1;
  });
})

额外修复要点:

  • 补全HTML中所有截断的标签,比如把</di改为</div>,补全meta、script、link标签的闭合与属性值,保证页面正常加载。
  • 如果需要保留属性选择器的写法,就要给对应DOM元素加上对应属性,比如<div image class='image'></div>、<div score class='score'></div>,但更推荐用类选择器匹配样式类元素。

内容的提问来源于stack exchange,提问作者Phuri Sottatipreedawong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:18:03