如何解决仅在页面上初始化多个数据表时,才会发生错误
我试图在一页上有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 举报,一经查实,本站将立刻删除。