jQuery sum rows adding all cells(jQuery总和行添加所有单元格)
问题描述
我搜索了有关添加表列的各种 SO 问题,但在行上的问题并不多.到目前为止,这是我所拥有的:
I've searched various SO questions about adding table columns but not many on rows. Here's what I have so far:
HTML
<table>
<thead>
<tr>
<th>MAX ATK</th>
<th>MAX DEF</th>
<th>MAX HP</th>
<th>Overall</th>
</tr>
</thead>
<tbody>
<tr>
<td class="combat">8170</td>
<td class="combat">6504</td>
<td class="combat">6050</td>
<td class="total-combat"></td>
</tr>
<tr>
<td class="combat">8500</td>
<td class="combat">10200</td>
<td class="combat">7650</td>
<td class="total-combat"></td>
</tr>
<tr>
<td class="combat">9185</td>
<td class="combat">7515</td>
<td class="combat">9185</td>
<td class="total-combat"></td>
</tr>
</tbody>
</table>
jQuery
$(document).ready(function () {
var sum = 0;
$('tr').find('.combat').each(function () {
var combat = $(this).text();
if (!isNaN(combat) && combat.length !== 0) {
sum += parseFloat(combat);
}
});
$('.total-combat').html(sum);
});
你可以看到我的小提琴这里.
You can see my fiddle here.
问题:它正在查找所有出现的 .combat
并将它们相加,而不是仅在当前行中查找出现的 .combat
.所以而不是:
Problem: It's finding ALL occurrences of .combat
and adding them up instead of only finding occurrences of .combat
within the current row. So instead of:
MAX ATK MAX DEF MAX HP Overall
8170 6504 6050 20724
8500 10200 7650 26350
9185 7515 9185 25885
我明白了:
MAX ATK MAX DEF MAX HP Overall
8170 6504 6050 72959
8500 10200 7650 72959
9185 7515 9185 72959
我尝试使用 closest()
认为会告诉它找到父 tr 并且只在该 tr 中添加 tds,如下所示:
I tried using closest()
thinking that would tell it to find the parent tr and only add tds within that tr, like so:
$('.combat').closest('tr').each(function () {
但这没有用:(
任何帮助将不胜感激!
推荐答案
你需要使用each循环
You need to use a each loop
$(document).ready(function () {
//iterate through each row in the table
$('tr').each(function () {
//the value of sum needs to be reset for each row, so it has to be set inside the row loop
var sum = 0
//find the combat elements in the current row and sum it
$(this).find('.combat').each(function () {
var combat = $(this).text();
if (!isNaN(combat) && combat.length !== 0) {
sum += parseFloat(combat);
}
});
//set the value of currents rows sum to the total-combat element in the current row
$('.total-combat', this).html(sum);
});
});
演示:小提琴
一种更短的求和方法:使用一元加法 - Demo
A shorter way to sum: Using unary plus - Demo
这篇关于jQuery总和行添加所有单元格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:jQuery总和行添加所有单元格
基础教程推荐
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- 直接将值设置为滑块 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01