Datatables 数据表“;页脚回调&x201D;函数不在页脚的两列中显示结果(仅在一列中)
我试着使用我现有的代码,该代码只适用于一列和,以使和显示在两列中-我试着将它们放入数组中,但它不起作用。是否不可能使用简单的阵列解决方案来解决此问题 这是 这是JS:Datatables 数据表“;页脚回调&x201D;函数不在页脚的两列中显示结果(仅在一列中),datatables,datatables-1.10,Datatables,Datatables 1.10,我试着使用我现有的代码,该代码只适用于一列和,以使和显示在两列中-我试着将它们放入数组中,但它不起作用。是否不可能使用简单的阵列解决方案来解决此问题 这是 这是JS: $(document).ready(function() { var table = $('#example').DataTable( { rowReorder: { selector: 'td:nth-child(2)' }, responsive: true, scrollX: true, s
$(document).ready(function() {
var table = $('#example').DataTable( {
rowReorder: {
selector: 'td:nth-child(2)'
},
responsive: true,
scrollX: true,
scrollY: "80vh",
scrollCollapse: true,
paging: true,
lengthChange: false,
lengthMenu: [ [10, 25, -1], [10, 25, "All"] ],
"order": [[ 0, "asc" ]],
"footerCallback": function ( row, data, start, end, display ) {
var api = this.api(), data;
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column( [3,4] )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Total over this page
pageTotal = api
.column( [3,4], { page: 'current'} )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Update footer
$( api.column( [3,4] ).footer() ).html(
total
);
},
buttons: ['pdf']
} );
table.buttons().container()
.appendTo( '#example_wrapper .small-6.columns:eq(0)' );
});
$(document.foundation()
因为我希望对不止一列进行汇总,我现在是否需要为每个列使用额外的插件?即使是那个插件,我也找不到一个例子,上面有多个我可以复制和轻松定制的专栏
代码与我所拥有的非常不同,让我感到困惑。另外工作示例:
如果我理解正确,您希望在两列中得到相同的总和。这很容易实现,你不需要插件
首先,您的一行(编号8)中有一行的“Tokyo”而不是工资数字。这就是为什么您的jsfiddle中有$NaN
其次,api.column()
用于选择单个列。要选择多个列,只需将函数调用设为复数,api.columns([3,4])
就可以了。在您提供的JSFIDLE中,您只有4列,这意味着您没有第4列索引,所以我这样做了
$( api.columns([2,3]).footer() ).html(
'$'+total
);
文件组织良好:
编辑:每个列页脚都包含自己的总和
基本上,您需要对每一列分别执行求和操作。
将两列的总和合并到一个变量中对您没有帮助
var sumColumns = [3,4]
sumColumns.forEach(function(colIndex){
// Total over all pages
var total = api
.column(colIndex)
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Update footer
$( api.columns(colIndex).footer() ).html(
total
);
})
Eric,我很抱歉小提琴没有保存我制作的更新版本。请参见新保存的:您应该只看到3行,并且总和应该是两个单独的总和-在2列中不相同。我将函数调用设为复数,但现在到处都是零。。你能再看一眼吗?现在一切都好了,谢谢你!只是想知道为什么要将第一部分移到上面:“$(document).ready(function(){”?“//Remove the formatting to get integer data for summation”部分不能在“$(document).ready(function(){”之后才能执行操作?声明函数独立于“ready”文档吗。如果在文档准备就绪之前调用该函数,并且该函数依赖于文档,则会遇到问题。由于此函数不依赖于文档,因此没有问题。您只需声明此函数一次,就可以调用它10亿次。“footerCallback”函数被调用多次。因此如果“intVal”如果将其放在“footerCallback”中,则每次都会重新定义该函数,这是不必要的。