Javascript DataTables.net表列页脚和
在将每个列的总和值(类为“sum”)插入其页脚时,我遇到了一个小细节问题 代码(或多或少直接取自DataTables.net)如下:Javascript DataTables.net表列页脚和,javascript,jquery,datatables,jquery-datatables,Javascript,Jquery,Datatables,Jquery Datatables,在将每个列的总和值(类为“sum”)插入其页脚时,我遇到了一个小细节问题 代码(或多或少直接取自DataTables.net)如下: var table=$('#示例').DataTable(); 表.列('.sum')。每个(函数(el){ var总和=表 .列(el) .data() .减少(功能a、b){ 返回parseInt(a,10)+parseInt(b,10); }); $(el.html('Sum:'+Sum); });只有在初始化DataTable时才需要执行表操作代码(请参
var table=$('#示例').DataTable();
表.列('.sum')。每个(函数(el){
var总和=表
.列(el)
.data()
.减少(功能a、b){
返回parseInt(a,10)+parseInt(b,10);
});
$(el.html('Sum:'+Sum);
});代码>只有在初始化DataTable时才需要执行表操作代码(请参见属性)
还要确保在
中定义了
块,否则将没有页脚
否则,您非常接近解决方案,请参见下面的更正代码:
var table = $('#ticketTable').DataTable({
'initComplete': function (settings, json){
this.api().columns('.sum').every(function(){
var column = this;
var sum = column
.data()
.reduce(function (a, b) {
a = parseInt(a, 10);
if(isNaN(a)){ a = 0; }
b = parseInt(b, 10);
if(isNaN(b)){ b = 0; }
return a + b;
});
$(column.footer()).html('Sum: ' + sum);
});
}
});
有关示例,请参见
更新
还有一个属性允许您定义页脚显示回调函数,该函数将在每次“绘制”事件时调用
initComplete
和footerCallback
之间的区别在于initComplete
被调用一次,而footerCallback
在每个“绘制”事件上都被调用
如果要显示整个表的总和,initComplete
就足够了。否则,如果您需要在页脚中显示仅与当前页面相关的数据(如中),请使用footerCallback
。Mix。将空替换为0
"initComplete": function (settings, json) {
this.api().columns('.sum').every(function () {
var column = this;
var intVal = function (i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '') * 1 :
typeof i === 'number' ?
i : 0;
};
var sum = column
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
});
$(column.footer()).html('Sum: ' + sum);
});
}
创建一个js提琴并与我们分享。类似这样的事情:可能已经注意到一些可能相关或不相关的事情,但不管怎样。。。似乎一直在用JQuery以错误的顺序加载DataTables引导js。(根据类似的js错误:)。我切换了它们,现在样式发生了一些变化以指示进度,但是在任何列的tfoot元素中仍然没有求和值。'initComplete';)我是如此接近。谢谢你的回答!需要更新。此解决方案不适用于空白列。@Siteogra,请参阅示例。@Gyrocode.com不适用于我,它是否支持所有版本的数据表@FreddySidauruk,没有,只有1.10和更新版本。