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

如何实现点击操作时批量修改所有button按钮的背景颜色

问题原因
  • 第一个错误:document.querySelectorAll('.btn') 返回的是所有匹配元素组成的 NodeList集合,不能直接给整个集合设置 style 属性,需要遍历集合中的每一个元素单独设置样式
  • 第二个优化点:代码中反复调用 document.querySelectorAll('.btn') 查询DOM,会造成不必要的性能损耗,建议提前一次查询保存结果
  • 额外可优化:旧版var声明的变量存在变量提升问题,实际开发推荐用let/const声明变量
修正后的代码

JS代码

// 提前一次查询所有按钮,保存为变量
const buttons = document.querySelectorAll(".btn");

for (let i = 0; i < buttons.length; i++) {
  buttons[i].addEventListener("click", function () {
    // 遍历所有按钮逐个设置背景色
    buttons.forEach(btn => {
      btn.style.backgroundColor = "red";
    });
  });
}

HTML代码

<button class="btn">abc</button>
<button class="btn">abc</button>
<button class="btn">abc</button>
<button class="btn">abc</button>
<button class="btn">abc</button>
<button class="btn">abc</button>
<button class="btn">abc</button>
<button class="btn">abc</button>
可选简化写法(事件委托)

不需要给每个按钮单独绑定事件,性能更好,也兼容后续动态新增的btn元素:

document.addEventListener('click', function(e) {
  if (e.target.classList.contains('btn')) {
    document.querySelectorAll('.btn').forEach(btn => btn.style.backgroundColor = 'red');
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:27:03