jQuery统计Repeater列的总和
<script type="text/javascript"> $(function () { StatSum("lblAAcount", "spAAcount"); StatSum("lblBBcount", "spBBcount"); } function StatSum(lblId, spId) { var sum = 0; $("span[id$='" + lblId +"']").each(function () { sum += parseInt($(this).text()); }); $("#" + spId).text(sum); } </script> <asp:Repeater ID="rptTest" runat="server" > <HeaderTemplate> <table> <tr> <th>年度</th> <th>AA总人数</th> <th>BB总人数</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Eval("year")%></td> <td><asp:Label runat="server" ID="lblAAcount" Text='<%#Eval("AAcount")%>'></asp:Label></td> <td><asp:Label runat="server" ID="lblBBcount" Text='<%#Eval("BBcount")%>'></asp:Label></td> </tr> </ItemTemplate> <FooterTemplate> <tr> <td>合计</td> <td><span id="spAAcount"></span></td> <td><span id="spBBcount"></span></td> </tr> </table> </FooterTemplate> </asp:Repeater>
jQuery为表格添加合计行
以下来自实例,计算表格的第3列开始到最后一列的值之各,在表格后面生成合计行
var rowCount = $("#tb1").find("tr[type='daataRow']:visible").length; if(rowCount > 1){ var columnCount = $("#tb1").find("tr:eq(0)").find("td").length; //设置数组默认值为0,不过IE不支持fill语法 var arr = Array(columnCount-2).fill(0); //如果要兼容IE,上面这行改为下面 /*var arr = new Array(columnCount-2); for(var x=0;x<columnCount-2;x++){ arr[x]=0; }*/ //表格第一行是标题行,从第2行开始循环 $("#tb1 tr:gt(0)").each(function(i,e){ //从第3列起计算列的总和 for(var x=0;x<columnCount-2;x++){ arr[x] += getTdVal(e, x+2); } }); var trHtml = '<tr type="daataRow"><td align="center">合计</td><td></td>'; for(var x=0;x<arr.length;x++){ var v = (arr[x] == 0) ? 0 : arr[x].toFixed(2); trHtml += '<td align="center">' + v + '</td>'; } trHtml += '</tr>'; $("#tb1 tr[type='daataRow']:last").after(trHtml); } function getTdVal(e, index){ var result = 0; var tdObj = $(e).find("td:eq(" + index + ")"); if(tdObj.length > 0){ var val = $.trim(tdObj.text()).replace(',',''); if(val != '' && !isNaN(val)){ result = parseFloat(val); } } return result; }