cas*_*ack 1 html jquery html-table sum
我搜索了有关添加表列的各种SO问题,但在行上没有多少.这是我到目前为止所拥有的:
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>
Run Code Online (Sandbox Code Playgroud)
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);
});
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到我的小提琴.
问题:它发现所有出现.combat并添加它们而不是仅查找.combat当前行中的出现.所以代替:
MAX ATK MAX DEF MAX HP Overall
8170 6504 6050 20724
8500 10200 7650 26350
9185 7515 9185 25885
Run Code Online (Sandbox Code Playgroud)
我越来越:
MAX ATK MAX DEF MAX HP Overall
8170 6504 6050 72959
8500 10200 7650 72959
9185 7515 9185 72959
Run Code Online (Sandbox Code Playgroud)
我尝试使用closest()思考来告诉它找到父tr并且只在那个tr中添加tds,如下所示:
$('.combat').closest('tr').each(function () {
Run Code Online (Sandbox Code Playgroud)
但那不起作用:(
任何帮助将不胜感激!
你需要使用每个循环
$(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);
});
});
Run Code Online (Sandbox Code Playgroud)
演示:小提琴
一种较短的求和方式:使用一元加 - 演示