如何用jQuery对总账表格Credit列求和计算累计余额?
解决总账表格Balance列累加的问题
你的代码主要有两个核心问题:一是没处理Credit数值里的千分位逗号,导致parseInt解析错误;二是只计算了总累加值,没把每一步的累计结果赋值给对应行的Balance单元格。下面是修正后的实现方案:
修正后的jQuery代码
// 初始化累计总和为0 let sum = 0; // 遍历表格目标行(如果你的行有.outstanding_tr类,替换成$('.outstanding_tr')即可) $('table.s-table tbody tr').each(function() { // 获取当前行Credit列文本,清除千分位逗号并截取整数部分 const creditText = $(this).find('td:eq(0)').text().replace(/,/g, '').split('.')[0]; // 转换为有效整数 const creditValue = parseInt(creditText, 10); // 数值有效时才累加 if (!isNaN(creditValue)) { sum += creditValue; } // 将累计值格式化(添加千分位逗号)后赋值给当前行的Balance列 $(this).find('td:eq(1)').text(sum.toLocaleString()); });
关键细节说明
- 处理千分位逗号:用
replace(/,/g, '')清除所有逗号,避免parseInt错误读取逗号前的片段(比如12,000.00会被误解析成12)。 - 逐行赋值累计值:遍历过程中每完成一次累加,就把当前总和写入对应行的Balance单元格,实现逐行累计的效果。
- 数字格式化:用
toLocaleString()自动给数字添加千分位逗号,和你期望的表格格式完全匹配。 - 选择器适配:如果你的表格行确实带有
.outstanding_tr类,直接把代码里的table.s-table tbody tr替换成.outstanding_tr即可。
运行这段代码后,表格会生成你期望的效果:
| Credit | Balance |
|---|---|
| 12,000.00 | 12,000 |
| 33,000.00 | 45,000 |
内容的提问来源于stack exchange,提问作者Raeyim
相关产品推荐
相关产品推荐

