jquery函数计算在第二次调用时无法正常工作

时间:2016-06-15 15:47:20

标签: javascript jquery

我有一个小计函数,可以对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');
});

1 个答案:

答案 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");
    }