Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Datatable sum条件页脚回调未显示正确的结果_Jquery_Html - Fatal编程技术网

Jquery Datatable sum条件页脚回调未显示正确的结果

Jquery Datatable sum条件页脚回调未显示正确的结果,jquery,html,Jquery,Html,我试图从页脚回调计算列的总和,但是。它没有给我正确的结果。使用的总金额应为12,但显示为24。对于拉胡尔来说,这也是一个错误的结果。如果重复该值,例如6是两次使用,并且卡和其他卡中也存在6。在这种情况下,它是在计算最新的结果 $(“#表1”).DataTable({ “分页”:false, “搜索”:错误, “信息”:错误, “footerCallback”:函数(行、数据、开始、结束、显示){ var列=[2,3]; //控制台日志(数据); var api=this.api(); //获

我试图从页脚回调计算列的总和,但是。它没有给我正确的结果。使用的总金额应为12,但显示为24。对于拉胡尔来说,这也是一个错误的结果。如果重复该值,例如6是两次使用,并且卡和其他卡中也存在6。在这种情况下,它是在计算最新的结果

$(“#表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_索引只是为了这个目的。如果你打开链接,你就会知道结果。