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

为何使用querySelector修改指定类样式仅生效于单个元素?

问题原因及解决方案

嘿,这个问题其实是DOM API的使用误区导致的,我来给你拆解下:

为什么只有单个元素被修改?

你用的document.querySelector('.test')方法,只会返回页面中匹配指定选择器的第一个元素,哪怕页面里有多个带.test类的元素,它也只取第一个。所以你的代码里listEl其实只是那个<p>标签,点击按钮自然只有它的颜色变红啦。

怎么修改所有匹配元素?

要选中所有带.test类的元素,你需要用document.querySelectorAll('.test')——这个方法会返回一个包含所有匹配元素的NodeList(类似数组的集合),然后你只需要遍历这个集合,给每个元素单独设置样式就行。

修正后的完整代码

<p class="test">Lorem ipsum dolor sit.</p>
<small class="test">Lorem ipsum dolor sit. Lorem ipsum dolor sit.</small>
<button onclick="myFunction()">Click me</button>

<script>
function myFunction() {
  // 获取所有带.test类的元素
  const testElements = document.querySelectorAll('.test');
  // 遍历每个元素,设置文字颜色为红色
  testElements.forEach(element => {
    element.style.color = "red";
  });
}
</script>

兼容旧浏览器的遍历方式

如果你的代码需要兼容不支持NodeList.forEach()的旧浏览器(比如IE),可以用普通的for循环来遍历:

function myFunction() {
  const testElements = document.querySelectorAll('.test');
  for (let i = 0; i < testElements.length; i++) {
    testElements[i].style.color = "red";
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:09:59