我有一个小计函数,可以对html表进行一些计算(总结已分配类的列)。我已修改它,以便我可以向它传递参数,并在第一个函数调用它按预期工作。当我再次调用它时,它会创建单元格并分配类,但数学或显然其他东西是错误的,因为它返回NaN。这是我的JSFiddle,下面是我的功能。任何帮助将不胜感激!
//v is parent,z is child element,w is which child column....ex: 0 or 1, y is first run or not, z is class name you want assigned
function subtotals(v, w, x, y, z) {
$(v).each(function (index, element) {
var subTotalAmt = 0;
var numRows = parseInt($(this).attr("rowspan"));
var firstRow = $(this).parent();
var lastRow = firstRow.nextAll('tr').slice(numRows - 2, numRows - 1);
var currentRow = firstRow;
for (i = 0; i < numRows; i++) {
subTotalAmt += parseInt($(currentRow.children(w)[x]).text());
currentRow = currentRow.next("tr");
}
if(y == 'yes'){
lastRow.after('<tr><td class="sub0">Sub Total</td><td class="' + z + '">' + subTotalAmt + '</td></tr>');
$(this).attr('rowspan', numRows + 1);
}
else {
lastRow.append('<td class="' + z + '">' + subTotalAmt + '</td>');
}
});
}
$(function doSubtotals() {
subtotals('.parent','.child','1','yes','sub1');
subtotals('.parent','.child','2','no','sub2');
});
答案 0 :(得分:0)
您的部分<td>
未包含有效数字,在这种情况下,计算失败并将NaN
(代表&#39;非数字&#39;)而不是有效数字(NaN + number = NaN)
。
为了解决这个问题,我将这个条件添加到您的代码中:
for (i = 0; i < numRows; i++) {
var tdValue=0;
if(!isNaN(parseInt($(currentRow.children(w)[x]).text())))
{
tdValue=parseInt($(currentRow.children(w)[x]).text());
}
subTotalAmt += tdValue;
currentRow = currentRow.next("tr");
}