2011-08-31 125 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/