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

调整JavaScript脚本实现qty1至qty9字段的求和计算

调整JavaScript求和脚本适配qty1至qty9字段

方案一:通过正则匹配name属性

修改findTotal函数,用document.querySelectorAll筛选所有name以qty开头且后缀为1-9数字的输入框:

function findTotal() {
  var arr = document.querySelectorAll('input[name^="qty"][name$="[1-9]"]');
  var tot = 0;
  for (var i = 0; i < arr.length; i++) {
    var value = parseFloat(arr[i].value);
    if (!isNaN(value)) { // 更严谨的数值校验,排除空值或非数值干扰
      tot += value;
    }
  }
  document.getElementById('total').value = tot.toFixed(2);
}

方案二:给输入框添加统一类名(更直观)

给所有需要求和的输入框新增同一个类名,比如qty-input:

<td id="col3">
  <input class="form-control qty-input" onblur="findTotal()" type="number" name="qty1" readonly/><br>
</td>

再修改脚本通过类名批量获取元素:

function findTotal() {
  var arr = document.querySelectorAll('.qty-input');
  var tot = 0;
  for (var i = 0; i < arr.length; i++) {
    var value = parseFloat(arr[i].value);
    if (!isNaN(value)) {
      tot += value;
    }
  }
  document.getElementById('total').value = tot.toFixed(2);
}

方案三:循环遍历指定范围的name

如果确定name固定为qty1到qty9,可直接循环数字1-9逐个获取元素:

function findTotal() {
  var tot = 0;
  for (var i = 1; i <= 9; i++) {
    var input = document.getElementsByName('qty' + i)[0];
    if (input) { // 确保元素存在再处理
      var value = parseFloat(input.value);
      if (!isNaN(value)) {
        tot += value;
      }
    }
  }
  document.getElementById('total').value = tot.toFixed(2);
}

额外提示

  • 原示例中输入框的id重复(都设为qty)违反HTML规范,建议去掉重复id或给每个输入框设置唯一id(如qty1、qty2)。
  • 用!isNaN(value)替代原判断逻辑,能更准确处理空值、非数值输入的情况,避免计算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:28:14