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

数字拆分div功能:多次点击提交重复拆分问题修复需求

问题解决:每次提交重新拆分数值,避免旧结果残留

问题根源

你的代码中res数组是全局变量,每次点击提交按钮时,新的拆分结果会追加到这个数组里,而不是重新生成新数组,导致旧数据和新数据混合,渲染出混乱的结果。

修复方案

把res数组的声明移到表单提交的事件处理函数内部,这样每次点击提交时都会重新创建一个空数组,从零开始计算拆分结果。

修改后的完整代码

let form = document.querySelector('form');
let cdiv = document.querySelector('#clr');
form.addEventListener('submit', event => {
  event.preventDefault();
  // 每次提交都重新初始化空数组
  let res = [];
  let num = Number(document.querySelector('#num').value);
  let sp = Number(document.querySelector('#split').value);
  
  if (num > 0) {
    if (sp > 0) {
      for (let i = 0; i < sp; i++) {
        res.push(Math.floor(num / sp));
      }
      let rem = num % sp;
      for (let i = 0; i < rem; i++) {
        res[i]++
      }
      cdiv.innerHTML = "";
      for (let i = 0; i < res.length; i++) {
        let color = "#9a5f2b"
        let colorDiv = document.createElement('div');
        colorDiv.style.backgroundColor = color;
        colorDiv.style.width = `${100 * res[i]}%`;
        colorDiv.style.height = '50px';
        colorDiv.style.margin = '5px';
        let text = document.createTextNode(`${res[i]}`);
        colorDiv.appendChild(text);
        cdiv.appendChild(colorDiv);
      }
    } else {
      let color = "#9a5f2b";
      let text = document.createTextNode("Error: both inputs should be greater than 0.");
      let colorDiv = document.createElement("div");
      colorDiv.style.padding = '5px';
      colorDiv.style.backgroundColor = color;
      colorDiv.appendChild(text);
      cdiv.innerHTML = "";
      cdiv.appendChild(colorDiv);
    }
  } else {
    let color = "#9a5f2b";
    let text = document.createTextNode("Error: both inputs should be greater than 0.");
    let colorDiv = document.createElement("div");
    colorDiv.style.padding = '5px';
    colorDiv.style.backgroundColor = color;
    colorDiv.appendChild(text);
    cdiv.innerHTML = "";
    cdiv.appendChild(colorDiv);
  }
});

额外优化建议

  • 可以在计算前先验证输入是否为有效数字(比如排除NaN的情况),避免非数字输入导致逻辑出错。
  • 样式可以通过CSS类统一管理,代替直接在JS中编写内联样式,让代码结构更清晰易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:05:19