You need to enable JavaScript to run this app. 如何使用jQuery计算表格指定列总和 解决借贷列及总金额计算异常
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jQuery计算表格指定列总和 解决借贷列及总金额计算异常

表格借方/贷方列求和异常排查与修正

现存核心问题

  • 遍历范围错误:原选择器$('table .acc_table .acc-row')仅匹配带acc-row类的行,当前DOM中仅第一行添加了该类,剩余3行数据完全未被纳入计算,求和基数就不符合预期。
  • 取值逻辑错误:$tr.find('td')返回当前行所有单元格的集合,后续用.next('td')的方式无法精准定位Debit、Credit列的单元格,jQuery集合的.next()会返回集合内每个元素的下一个兄弟节点,最终取到的内容并非目标列的数值。
  • 未定义变量报错:判断条件!isNaN(value)中的value从未声明定义,会直接触发ReferenceError,导致后续求和、赋值逻辑全部中断。
  • 变量作用域错误:TotalAmount定义在.each()循环的回调函数内部,属于局部变量,循环执行结束后变量会被销毁,后续给#totalAmount赋值时无法识别该变量。

修正后可正常运行的代码

页面DOM(无需修改,保留原有结构即可)

<table>
  <thead>
    <tr>
      <th>No</th>
      <th>Debit</th>
      <th>Credit</th>
      <th>Document No</th>
    </tr>
  </thead>
  <tbody class="acc_table">
    <tr>
      <td>1</td>
      <td>100</td>
      <td>0</td>
      <td>Testing 1</td>
    </tr>
    <tr>
      <td>2</td>
      <td>0</td>
      <td>100</td>
      <td>Testing 2</td>
    </tr>
    <tr>
      <td>3</td>
      <td>320</td>
      <td>0</td>
      <td>Testing 3</td>
    </tr>
    <tr>
      <td>4</td>
      <td>0</td>
      <td>250</td>
      <td>Testing 4</td>
    </tr>
  </tbody>
  <tfoot>
   <tr>
     <td>Total</td>
     <td><input type='text' id='totalDr' value='0.00' disabled></td>
     <td><input type='text' id='totalCr' value='0.00' disabled></td>
   </tr>
  </tfoot>
</table>
<br><br>
<input type='text' id='totalAmount' value='0.00' disabled>

修正后的jQuery逻辑

$(document).ready(function() {
  var total_cr = 0;
  var total_dr = 0;
  // 遍历acc_table下所有行,无需依赖acc-row类
  $('.acc_table tr').each(function() {
    var $tds = $(this).find('td');
    // 按列索引精准取值:第2列(索引1)为Debit,第3列(索引2)为Credit
    // 加||0兜底,避免空值/非数字导致的NaN
    var debitVal = parseInt($tds.eq(1).text()) || 0;
    var creditVal = parseInt($tds.eq(2).text()) || 0;
    total_dr += debitVal;
    total_cr += creditVal;
  });
  // 总金额定义在循环外部,避免作用域问题
  var TotalAmount = total_dr + total_cr;
  // 按预期格式赋值
  $("#totalDr").val(total_dr.toFixed(2));
  $("#totalCr").val(total_cr.toFixed(2));
  $("#totalAmount").val(TotalAmount.toFixed(2));
});

输出结果

运行修正后的代码,会得到符合预期的数值:

  • 借方合计:420.00
  • 贷方合计:350.00
  • 两类金额总计:770.00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 07:54:02