![](/img/trans.png)
[英]jQuery DataTables: Uncaught TypeError: Cannot read property 'length' of undefined
[英]jquery datatables: “Uncaught TypeError: Cannot read property 'length' of undefined” after destroying and reinitializing. Table as data source
我对 DataTables() 的初始初始化加载了带有服务器端数据表的表。
Data.columns = [];
$('th').each(function(item,i){
Data.columns.push({'data': $(this).text().trim()})
});
$('#searchtable').DataTable({
'serverSide': true,
'ajax': '/api/v1/reports/?format=datatables',
'columns': Data.columns
});
当用户执行自定义(非数据表)搜索时,我向非数据表 api 函数发出 ajax 请求。 api 函数发送一个响应,我执行$('#searchtable').DataTables({ destroy : true })
,该表被清除并重新加载新数据,然后我重新初始化该表。
这是加载新(搜索生成的表)的函数:
Template = {
fill_search_table : function(data){
Data.table = $('#searchtable');
Data.table.html('');
var $thead = $('<thead/>', {});
var $tbody = $('<tbody/>', {});
var header_values = Object.keys(data[0])
var $thead_tr = $('<tr/>');
$thead.append($thead_tr);
$(header_values).each(function(i, item){
var $th = $('<th/>', {
text: item
})
$thead_tr.append($th);
});
Data.table.append($thead);
cells = new Array(header_values.length).fill(0);
$(data).each(function(i, item){
var $tr = $('<tr/>', {});
$tbody.append($tr);
for(cell in item){
cell_header_index = header_values.indexOf(cell);
var $td = $('<td/>', {
text: item[cell]
})
cells[cell_header_index] = $td;
}
$(cells).each(function(j, cell){
$tbody.append(cell)
})
})
Data.table.append($tbody);
Data.table.DataTable({destroy: true})
Data.table.DataTable({
bPaginate: false,
bFilter: false,
bInfo: false,
});
},
}
重新初始化表时,我得到:“未捕获的类型错误:无法读取未定义的属性‘长度’”
出了什么问题?
我的问题是我将 <td> 附加到 <tbody> 而不是 <tr>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.