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

如何使用纯JavaScript实现点击新下拉选项后重置checkbox勾选值

核心问题分析

  • 原有totalIt函数全局匹配所有name=product的复选框,统计逻辑没有和当前展示的门店绑定,且只会更新第一个name=total的输入框,不同门店的勾选状态会互相干扰
  • 下拉切换时没有对目标门店的复选框、合计值做重置处理

修正方案

你的HTML、CSS代码无需调整,直接替换为如下JS代码即可:

document.querySelector("select#store").addEventListener("change", () => {
  display(event.target.value);
});

const boxs = document.querySelectorAll("div.box");
 
// 下拉切换展示逻辑
function display(value) {
  for (const box of boxs) {
    if (box.classList.contains(value)) {
      box.classList.remove("hide");
      // 切换到当前门店时重置复选框和合计值
      const checkboxes = box.querySelectorAll('input[name="product"]');
      checkboxes.forEach(item => item.checked = false);
      box.querySelector('input[name="total"]').value = "0%";
    } else {
      box.classList.add("hide");
    }
  }
  // 切换后刷新当前门店合计值
  totalIt();
}
display("A");
   
// 复选框合计逻辑
function totalIt() {
  // 仅匹配当前处于展示状态的门店盒子
  const activeBox = document.querySelector("div.box:not(.hide)");
  const input = activeBox.querySelectorAll('input[name="product"]');
  const totalInput = activeBox.querySelector('input[name="total"]');
  var total = 0;
  for (var i = 0; i < input.length; i++) {
    if (input[i].checked) {
      total += parseFloat(input[i].value);
    }
  }
  totalInput.value = total + "%";
}

改动说明

  • 在display函数切换到对应门店时,新增了重置当前门店所有复选框勾选状态、重置合计值为0%的逻辑
  • 修改totalIt函数,只匹配当前处于展示状态的门店盒子内的复选框和合计输入框,不同门店的统计逻辑完全隔离
  • 切换下拉选项后主动调用totalIt刷新合计值,保证状态同步

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:45:00