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

如何在输入值变更时计算表格行的列值总和?解决$未定义报错

问题解决:输入值变更时更新行总计及“$ is not defined”报错处理

报错与逻辑问题说明

“$ is not defined”是因为代码里用了jQuery的$语法,但未引入jQuery库。同时行总计计算还有两处逻辑错误:

  • 循环时重复选取所有.size_qty元素,应该取当前循环的输入框
  • 输入框值是字符串类型,直接累加会变成字符串拼接,需要转成数字再计算

解决方案

方案1:引入jQuery并修复计算逻辑

先在HTML中添加jQuery库的引入(放在JS代码之前):

<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>

然后修改JS函数:

function sum_row_qty(el) {
  let rowTotal = 0;
  const parentRow = $(el).closest('tr');
  // 遍历当前行的所有数量输入框
  parentRow.find('.size_qty').each(function() {
    // 将输入值转为数字,空值或非数字默认取0
    rowTotal += Number($(this).val()) || 0;
  });
  // 将计算结果更新到总计单元格,保留两位小数
  parentRow.find('.total').text(rowTotal.toFixed(2));
}

方案2:原生JavaScript实现(无需jQuery)

如果不想依赖jQuery,直接用原生JS编写,彻底避免$相关报错:

function sum_row_qty(el) {
  let rowTotal = 0;
  const parentRow = el.closest('tr');
  const qtyInputs = parentRow.querySelectorAll('.size_qty');
  
  // 遍历当前行的数量输入框
  qtyInputs.forEach(input => {
    rowTotal += Number(input.value) || 0;
  });
  
  // 更新总计单元格内容
  parentRow.querySelector('.total').textContent = rowTotal.toFixed(2);
}

HTML部分保持不变,输入框的onchange事件可正常触发计算函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:30:43