我有一张这样的表:
HTML:
<table>
<tr><td>value1</td><td>value2</td><td>value3</td></tr>
....
<tr><td>value1</td><td>value2</td><td>value3</td></tr>
</table>
并希望通过使用jquery添加动态行来计算表底部每行的总和。
这是使用jQuery计算之前的示例表。
2 3 4
7 1 2
32 58 4
这是结果:
2 3 4
7 1 2
32 58 4
41 62 10
JQuery的:
$("tr").each(function(){
var tdCount= $(this).find("td").length;
for(i=0;i<tdCount;i++)
{
newRow[i]+=parseInt($(this).eq(i).value);
}
});
var row="<tr>";
for (i=0;i<newRow.length;i++)
row+="<td>"+newRow[i]+"</td>";
row+="</tr>";
$("table").append(row);
答案 0 :(得分:5)
你可以这样做。
$('table tfoot td').each(function(index) {
var total = 0;
$('tbody tr').each(function() {
total += +$('td', this).eq(index).text(); //+ will convert string to number
});
$(this).text(total);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr><td>2</td><td>3</td><td>4</td></tr>
<tr><td>7</td><td>1</td><td>2</td></tr>
<tr><td>32</td><td>58</td><td>4</td></tr>
</tbody>
<tfoot>
<tr><td></td><td></td><td></td></tr>
</tfoot>
</table>
动态总行
更新。
var totalRow = '', columnNo = $('table tr:first td').length;
for (var index = 0; index < columnNo; index++) {
var total = 0;
$('table tr').each(function () {
total += +$('td', this).eq(index).text(); //+ will convert string to number
});
totalRow += '<td>' + total + '</td>';
}
$('table').append('<tr>' + totalRow + '</tr>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr><td>2</td><td>3</td><td>4</td></tr>
<tr><td>7</td><td>1</td><td>2</td></tr>
<tr><td>32</td><td>58</td><td>4</td></tr>
</table>
答案 1 :(得分:4)
如果您需要动态创建包含结果的新行,可以使用append
函数执行此操作:
$(document).ready(function(){
var result = [];
$('table tr').each(function(){
$('td', this).each(function(index, val){
if(!result[index]) result[index] = 0;
result[index] += parseInt($(val).text());
});
});
$('table').append('<tr></tr>');
$(result).each(function(){
$('table tr').last().append('<td>'+this+'</td>')
});
});
请参阅此处的示例:FIDDLE
答案 2 :(得分:0)
复制并浏览编辑器上的代码
<强> JQuery的强>
<script type="text/javascript">
$(document).ready(function () {
$('tr').each(function () {
var sum = 0
$(this).find('.combat').each(function () {
var combat = $(this).text();
if (!isNaN(combat) && combat.length !== 0) {
sum += parseFloat(combat);
}
});
$('.total-combat', this).html(sum);
});
});
</script
<强> 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>