2011-08-31 144 views
2

创建的列对于总计行应该有“7”。 Redeemed列的总行应该有“6”。有时候,只有两个月的行或者可能有十行。我怎样才能将这些值累加起来,并使用jQuery将它们粘贴在表格的最后一行?如何使用jQuery来计算我列中值的总数?

<table cellspacing="0" rules="all" border="1" id="DataGrid2" style="border-collapse:collapse;"> 
<tbody><tr> 
    <td>CreationDate</td><td>Created</td><td>Redeemed</td> 
</tr><tr> 
    <td>August 2011</td><td>5</td><td>6</td> 
</tr><tr> 
    <td>July 2011</td><td>1</td><td>0</td> 
</tr><tr> 
    <td>June 2011</td><td>1</td><td>0</td> 
</tr><tr> 
    <td>Total</td><td>&nbsp;</td><td>&nbsp;</td> 
</tr> 

图片: enter image description here

回答

1

好吧,这一个获取值两列...

var c2Total = 0; 
var c3Total = 0; 

$("tr").find("td").each(function(){ 
    var curVal = parseInt($(this).text()); 

    if(!isNaN(curVal)){ 
     if($(this).index() == 1){ 
      c2Total += parseInt($(this).text()); 
     } 
     else if($(this).index() == 2){ 
      c3Total += parseInt($(this).text()); 
     } 
    } 

}); 
$("#DataGrid2 tr:last td:eq(1)").text(c2Total); 
$("#DataGrid2 tr:last td:eq(2)").text(c3Total); 

你可以在这里看到小提琴:http://jsfiddle.net/Broham/Rtm8p/2/

+0

这工作,但只获取创建的列。我怎样才能得到赎回的总额呢? –

+0

更新后的版本应该都可以。 –

0

对于每一列i,通过表中的每一行(即,每个<tr>)环,跟踪运行总和为i<td>在那一行。

0
var total = 0; 

$('#DataGrid2 td:nth-child(3)').each(function(){ 
    total += parseInt($(this).text()) || 0; 
}); 

$('#DataGrid2 td:last').text(total); 

http://jsfiddle.net/WPfWE/1/

+0

这工作,但只收取赎回列。创建的列是空白的。有任何想法吗? –

1

不是干净的解决方案,但应支持无限数量的列而无需进一步编辑:

$(function() { 
    var totals = []; 
    $("#DataGrid2 tr:gt(0)").each(function(){ 
     $(this).find("td:gt(0)").each(function(){ 
      var val = (parseInt($(this).text()) || 0); 
      totals[$(this).index() - 1] = ((totals[$(this).index() - 1]) ? totals[$(this).index() - 1] + val : val); 
     });    
    }); 

    for(var i = 0; i < totals.length; i++) { 
     $("#DataGrid2 tr:last td:eq(" + (i + 1) + ")").text(totals[i]); 
    } 

}); 
0

我有一个JQuery插件,Sumtr,它对任意表进行求和。默认情况下,它假定您想为.sum类的单元格的<tbody>中的行进行求和。它将结果分成.summary类的行。

默认值很容易配置。

http://jsfiddle.net/vaNZB/