DataTables计算时间差列总和 搜索筛选后未重新计算问题
问题修复方案
根因说明
你当前调用api.column(3).data()时,默认返回的是该列的全部原始数据,不受搜索筛选、分页的影响,所以筛选后统计结果还是全量总和。
修复方法
只需要修改footerCallback中获取列数据的部分,给column方法加{search: 'applied'}参数,就可以仅获取筛选后的行数据,修改后的代码如下:
(function ($) { $(document).ready(function() { var table = $('#employeee1').DataTable({ "footerCallback": function ( row, data, start, end, display ) { var api = this.api(), data; // 新增{search: 'applied'}参数,仅统计筛选后的数据 total = api .column(3, {search: 'applied'}) .data() .reduce( function(cume, current, idx, api) { return addDurations(cume, current); }, "00:00:00" ); $( api.column(3).footer() ).html(total); } }); }); })(jQuery);
如果需要仅统计当前分页的筛选数据,可把参数改为{search: 'applied', page: 'applied'}即可。
额外优化建议
你当前引入了1.10.19、1.10.15两个不同版本的jQuery DataTables JS文件,可能会引发未知兼容性冲突,建议删掉其中一个重复引用。
内容的提问来源于stack exchange,提问作者Bruno
相关产品推荐
相关产品推荐

