如何计算所有行表格表的一列中的值的总和

时间:2016-05-17 12:26:12

标签: jquery html

我有一张这样的表:

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);

3 个答案:

答案 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>