jquery 数据表:“未捕获的类型错误:无法读取未定义的属性‘长度’”在销毁和重新初始化后。表作为数据源
Posted
技术标签:
【中文标题】jquery 数据表:“未捕获的类型错误:无法读取未定义的属性‘长度’”在销毁和重新初始化后。表作为数据源【英文标题】:jquery datatables: "Uncaught TypeError: Cannot read property 'length' of undefined" after destroying and reinitializing. Table as data source 【发布时间】:2020-12-16 13:12:43 【问题描述】:我对 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,
);
,
重新初始化表时,我得到:“Uncaught TypeError: Cannot read property 'length' of undefined”
出了什么问题?
【问题讨论】:
你到底是从哪里得到这个错误的?我怀疑它是Data.table.append($tbody);
- 在这种情况下,您需要先销毁 existing 表,然后再向其中添加新行。
在 .append($tbody) 之前放置破坏会导致“无法重新初始化表”错误。也就是说,我认为该表会重新初始化,但似乎只是部分重新初始化。
@freedomn-m 是的,好像有初始化,但是实际的datatable里没有数据,后面是DOM表里的数据(空第一tbody行,然后是 DOM 表)
【参考方案1】:
我的问题是我将
【讨论】:
以上是关于jquery 数据表:“未捕获的类型错误:无法读取未定义的属性‘长度’”在销毁和重新初始化后。表作为数据源的主要内容,如果未能解决你的问题,请参考以下文章
JQuery:未捕获的类型错误:无法读取未定义的属性“调用”
jquery 数据表:“未捕获的类型错误:无法读取未定义的属性‘长度’”在销毁和重新初始化后。表作为数据源
未捕获的类型错误:无法读取未定义的属性“msie” - jQuery 工具
未捕获的类型错误:无法读取 jquery 滑块中未定义的属性“addClass”
数据表插件错误未捕获的类型错误:无法读取未定义的属性“mData”
django 中的 Jquery:未捕获的类型错误:无法读取 null 的属性“createDocumentFragment”