【发布时间】:2022-01-09 17:06:09
【问题描述】:
需要在数据表函数内附加一个对象。我在我的应用程序的多个页面中有以下代码。我试图从应用程序中的一个通用 JS 文件中将一个对象附加到这个函数。
var table;
$(document).ready(function() {
table = $('#table').DataTable({
dom: 'lBfrtip',
lengthMenu: [
[ 10, 25, 50, 100, -1 ],
[ '10', '25', '50', 100, 'Show all' ]
],
"processing": true, //Feature control the processing indicator.
"serverSide": true, //Feature control DataTables' server-side processing mode.
"columnDefs": [
{
"targets": [ -1 ], //last column
"orderable": false, //set not orderable
},
],
});
});
我尝试在通用 JS 文件中将按钮属性推送到 DataTable 函数,如下所示:
table.push({buttons: [
{
text:'Save as PDF',
className: "btn btn-primary",
extend: 'pdfHtml5',
download: 'open',
}
]
});
但是得到这个错误:
Uncaught TypeError: Cannot read properties of undefined (reading 'push')
【问题讨论】:
-
这是您的确切代码吗?你没有
let table=$("#table").DataTable...或var table=$("#table").DataTable...吗? -
您的
table.push代码究竟在哪里?因为table直到 doc.ready 之后才定义,所以如果您的推送代码在 doc.ready 之前运行,那么table变量(推断的全局变量)将不会被定义——但这会给出table is not defined。所以你的变量存在(编辑:如编辑所示)但在 .push 运行时没有值 -
@freedomn-m 错过了添加 var 表;现在添加。
-
你试图
.push到一个没有被赋值的变量,所以 js 不知道应用哪个“推送”方法。如果你使用了错误的方法(我怀疑),那么你会得到push is not a function -
@freedomn-m 明白了。你知道从不同的 JS 文件中推送按钮对象的正确方法吗?
标签: jquery datatables