Jquery Datatable sum条件页脚回调未显示正确的结果
我试图从页脚回调计算列的总和,但是。它没有给我正确的结果。使用的总金额应为12,但显示为24。对于拉胡尔来说,这也是一个错误的结果。如果重复该值,例如6是两次使用,并且卡和其他卡中也存在6。在这种情况下,它是在计算最新的结果Jquery Datatable sum条件页脚回调未显示正确的结果,jquery,html,Jquery,Html,我试图从页脚回调计算列的总和,但是。它没有给我正确的结果。使用的总金额应为12,但显示为24。对于拉胡尔来说,这也是一个错误的结果。如果重复该值,例如6是两次使用,并且卡和其他卡中也存在6。在这种情况下,它是在计算最新的结果 $(“#表1”).DataTable({ “分页”:false, “搜索”:错误, “信息”:错误, “footerCallback”:函数(行、数据、开始、结束、显示){ var列=[2,3]; //控制台日志(数据); var api=this.api(); //获
$(“#表1”).DataTable({
“分页”:false,
“搜索”:错误,
“信息”:错误,
“footerCallback”:函数(行、数据、开始、结束、显示){
var列=[2,3];
//控制台日志(数据);
var api=this.api();
//获取sumCondition并放入数组
_.每个(列、函数(idx){
var总计=api
.列(idx)
.data()
.减少(功能a、b){
//查找当前值的索引以访问同一行中的sumCondition值
var cur_index=api.column(idx.data().indexOf(b);
如果(api.column(1.data)([cur_index]=“Use”){
返回parseInt(a)+parseInt(b);
}否则{
返回parseInt(a);
}
}, 0)
//
var rahulTotal=api
.列(idx)
.data()
.减少(功能a、b){
//查找当前值的索引以访问同一行中的sumCondition值
var cur_index=api.column(idx.data().indexOf(b);
如果(api.column(1.data)([cur_index]=“Rahul”){
返回parseInt(a)+parseInt(b);
}否则{
返回parseInt(a);
}
}, 0)
$('tr:eq(0)th:eq('+idx+'),api.table().footer()).html(总计);
})
}
});代码>
果
苏姆凯德
#吃
#剩余的
计数
苹果
使用
6.
5.
橘子
卡片
6.
5.
橘子
其他
6.
5.
橘子
拉胡尔
2.
9
芒果
使用
6.
5.
香蕉
拉胡尔
2.
9
原因
问题出在这条线路上
var cur_index = api.column(idx).data().indexOf(b);
作为国家
indexOf()方法返回给定元素所在的第一个索引
可以在数组中找到,如果不存在,则为-1
因此,当通过b=6时,将始终返回第一行
苹果|使用| 6 | 5
因此,总数将为24
解决方案
下面的代码段减少了整个数据,而不是一列,因此不需要获取当前行索引
$(“#表1”).DataTable({
“分页”:false,
“搜索”:错误,
“信息”:错误,
“footerCallback”:函数(行、数据、开始、结束、显示){
var列=[2,3];
//控制台日志(数据);
var api=this.api();
//获取sumCondition并放入数组
_.每个(列、函数(idx){
var total=total=api.data().reduce(函数(a,b){
var-prev=0;
var-next=0;
if(数组isArray(a)){
如果(a[1]=“使用”){
prev=parseInt(a[idx]);
}
}否则{
prev=a;
}
如果(b[1]=“使用”){
next=parseInt(b[idx]);
}
返回上一个+下一个;
},0);
$('tr:eq(0)th:eq('+idx+'),api.table().footer()).html(总计);
})
}
});代码>
果
苏姆凯德
#吃
#剩余的
计数
苹果
使用
6.
5.
橘子
卡片
6.
5.
橘子
其他
6.
5.
橘子
拉胡尔
2.
9
芒果
使用
6.
5.
香蕉
拉胡尔
2.
9
试试这个。我还是不明白这个问题。但从我得到的,我想这就是你想要的
$("#table1").DataTable({
"paging": false,
"searching": false,
"info": false,
"footerCallback": function ( row, data, start, end, display ) {
var columns = [2, 3];
//console.log(data);
var api = this.api();
// Get sumCondition and put in array
_.each(columns, function(idx) {
var total = 0;
_.each(api.column(idx).data(), function(i, v) {
if(api.column(1).data()[v] === "Use") {
total = parseInt(total) + parseInt(i);
}
});
$('tr:eq(0) th:eq('+idx+')', api.table().footer()).html(total);
})
}
});
不知道你在说什么。您预期的结果是什么?如果sumCondition=='Use'。总计显示为24,但在sumCondition=='Use'的情况下,总计应仅为12。我只想得到这一栏的总数。我不想得到所有值的总和。我使用cur_索引只是为了这个目的。如果你打开链接,你就会知道结果。