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

JavaScript切换器仅生效一次 如何用单个按钮切换4个div的类名

问题根因
  • 原代码正则匹配后的判断逻辑错误:捕获到的g1是完整的class="red"/class="green"字符串,和"red"直接对比永远不成立,导致仅能触发一次red转green,后续无法反向切换
  • 直接修改innerHTML的实现方式稳定性极差,会销毁子元素所有绑定的事件、内存数据,推荐直接操作DOM原生的classList属性实现类名切换
修正后可循环切换的实现代码

JavaScript 代码

function toggleColor() {
  // 获取wrapper下所有需要切换颜色的div元素
  const colorBoxes = document.querySelectorAll('.wrapper div');
  colorBoxes.forEach(box => {
    // 交替切换red和green类名
    box.classList.toggle('red');
    box.classList.toggle('green');
  });
}

CSS 代码(无需修改)

.wrapper * {
  width: 100px;
  height: 100px;
  margin: 100px;
}

.red {
  background: #f00;
}

.green {
  background: #0f0;
}

HTML 代码(无需修改)

<button onclick="toggleColor()">toggle</button>

<div class="wrapper">
  <div class="red"></div>
  <div class="red"></div>
  <div class="red"></div>
  <div class="red"></div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:45:02