DataTables:总计一列 - 除了具有特定类的行?

时间:2015-09-04 12:30:07

标签: javascript jquery datatables datatables-1.10

我有一个列总计的代码,但我有已经有总数的子组。我可以将列中的每个数字总计除灰色总行数外吗? enter image description here

var table = $('#datatable');
var leng = table.find("tr:first").children().length;

    // add totals to new row
            for (var i = 0; i < leng; i++) {

                var total = api
                .column(i)
                .data()
                    .reduce(function (a, b) {
                        // return if it's not a value from the gray row
                        return intVal(a) + intVal(b);
                    });

                // correct any html mistakes that slip through
                if (isNaN(intVal(total)))
                    total = '';

                table.find("tfoot tr:first th").eq(i).html(total);
            };

2 个答案:

答案 0 :(得分:2)

为什么不在:not API方法上使用rows()选择器,并根据剩余的行计算总和?非常小的示例,在回调中将col#1的总和添加到页脚:

var table = $('#example').DataTable({
    drawCallback: function () {
        var api = this.api(),
            sum = 0;
        api.rows(":not('.sgrouptotal')").every(function() {
            sum += parseFloat(this.data()[0]);
        });    
        $(api.column(0).footer()).text(sum);
    }
});

演示 - &gt;的 http://jsfiddle.net/j38bmagj/

以上内容应该很容易扩展到多个列。计算与sum4 += this.data()[4]相同的循环中col#4的总和,依此类推。

答案 1 :(得分:0)

这样做呢?

i = 0;          
$('#datatable tr:first tr').each(function(key, value){
    if(!$(this).hasClass("sgrouptotal"){
        i += parseInt(value.text());
    }
});