问题描述
我试图在一页上有2个数据表。
function initialize_datatable(args) {
generate_footer(args.table_selector);
$(args.table_selector).DataTable({
columns: args.columns,order: args.order,scrollX: true,...
...
我是否需要将多个表合并为一个.DataTable()
初始化?例如。 $('#table-one #table-two #table-three').DataTable()
?
每当我尝试分别对.DataTable()
进行两次调用时,都会出现以下错误:
Uncaught TypeError: Cannot set property 'nTf' of undefined
。如果您使用Google这个错误,则表示发生此错误是因为页眉和页脚中元素的数量不同。我已经在页眉页脚中计算了<th>
个元素,它们是相同的数字。
我可以初始化一个表或另一个表,但不能同时初始化两个表,所以我知道多次调用.DataTable()
这是initialize_datatable
的完整定义:
function initialize_datatable(args) {
generate_footer(args.table_selector);
$(args.table_selector).DataTable({
columns: args.columns,sScrollXInner: "100%",dom: "Blfrtip",buttons: [
{
extend : 'copyHtml5',title : args.title,sheetName : args.title,footer : true,exportOptions: {
columns: ':visible'
}
},{
extend : 'excelHtml5',{
extend : 'csvHtml5',{
extend : 'print',text : 'Print',autoprint : true,stripHtml : false,exportOptions: {
columns: ':visible',}
}
],drawCallback: function () {
let api = this.api();
// hide columns that add up to 0
api.columns().every(function (i) {
let sum = this.data().sum();
if (sum === 0 && typeof sum === 'number' && i !== 0) {
api.column(i).visible(0);
}
});
},footerCallback: function (row,data,start,end,display) {
let api = this.api()
intVal = function (i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g,'')*1 :
typeof i === 'number' ?
i : 0;
}
api.columns({page: 'current'}).every(function (i) {
let columnTotal = this.data().reduce(function (a,b) {
return intVal(a) + intVal(b);
},0);
if (!isNaN(columnTotal)) {
columnTotal = Intl.NumberFormat('en-US',{style: 'currency',currency: 'USD'}).format(columnTotal);
$(this.footer()).html(columnTotal);
}
})
}
});
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)