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

如何为sum_row_qty函数添加判定条件,仅当表格存在指定列时求和?

解决表格无size_qty列时qty被覆盖为0的问题

你的问题核心是:当表格里没有.size_qty类的元素时,函数依然会把.qty的数值设为0,而不是跳过计算。只需要在单行处理逻辑里加一个判断——先检查当前行有没有.size_qty元素,没有就直接终止该行的操作即可。

修改后的代码如下:

function sum_row_qty(el) {
  if (el) {
    let parent = el.closest("tr");
    // 先获取当前行所有的size_qty输入框
    const sizeQtyInputs = parent.querySelectorAll('.size_qty');
    // 如果当前行没有任何size_qty元素,直接返回,不修改qty的值
    if (sizeQtyInputs.length === 0) {
      return;
    }
    let rowTotal = 0;
    sizeQtyInputs.forEach(function(e) {
      // 处理空值或非数字输入,避免总和变成NaN
      rowTotal += parseFloat(e.value) || 0;
    });
    parent.querySelector('.qty').value = rowTotal;
  } else {
    document.querySelectorAll("#tableRows > tr > td:first-child input").forEach(sum_row_qty);
  }
}

关键修改说明:

  • 新增sizeQtyInputs.length === 0的判断:如果当前行找不到任何.size_qty元素,直接用return结束当前函数调用,不会执行后续的赋值操作,自然也就不会把qty改成0了。
  • 补充parseFloat(e.value) || 0:如果某个.size_qty输入框是空的或者输入了非数字内容,parseFloat会返回NaN,用|| 0可以把这种情况转为0,避免最终的总和变成无效的NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:25:37