javascript - jquery 数据表:“未捕获的类型错误:无法读取未定义的属性‘长度’”在销毁和重新初始化后。表作为数据源
问题描述
我对 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>
推荐阅读
- javascript - SAPUI5 JSON REST API(非oData)模拟服务器
- android - 如何在连续按下 3 秒时更改按钮的文本
- java - React 仅在私有浏览器中更新
- flutter - 无法在颤动中调整应用栏中的小部件大小
- wso2 - WSO2 apictl 获取凭据时出错 | 请求没有响应(Ubuntu)
- java - 无法获取“https://google.bintray.com/.../maven-metadata.xml”。从服务器收到状态码 403:Forbidden
- python - 弹出没有图像的通知python winrt
- android - `onRequestPermissionsResult()` 在 Fragment-Kotlin 中不起作用
- android - 从 Playstore 发布相同的应用程序后,Firestore 文档未正确写入
- java - 按钮可见和不可见 java android studio