我在Internet Explorer 10和DataTable.destroy()
之间的项目中遇到了兼容性问题。我有很多DataTable,当我更改或添加数据时,我使用Ajax和$("#" + this.id).DataTable.destroy()
来重建表。
以下是用于初始化DataTables的代码:
$('.tableReleves').each(function( index ) {
if(this.childElementCount>1) {
$("#" + this.id).DataTable({
"paging": true,
"info": false,
"searching": false,
"retrieve": true,
"language": {
"paginate": {
"previous": "«",
"next": "»",
}
},
"columnDefs": [
{"type": "currency", "targets": this.id.contains('apres') ? [-2, -1] : -1}
]
});
}
});
toDestroy = true;
更新或添加新数据后,我用它来更新我的dataTable
if(toDestroy) {
$('.tableReleves').each(function( index ) {
if(this.childElementCount>1) {
$("#" + this.id).DataTable.destroy()
}
})
}
(toDestroy变量用于避免在页面加载期间调用此部分)
这在Chrome或Firefox上工作正常,但在IE上显示错误。
无法获取属性“style”的值:object为null或 未定义
我尝试了一些方法,比如draw(),clear(),但没有任何方法可以在三个Web浏览器上运行。
感谢。
答案 0 :(得分:0)
尽管这是一篇很老的文章,但是由于我遇到了同样的问题,因此我在这里标记解决方案。我的代码在IE以外的其他浏览器中也能正常工作。如果class
datatable
没有与table
标记关联,则IE会破坏数据表功能。
销毁之前,检查表中是否有class
datatable
。如此处所述更改您的代码。
if(toDestroy) {
$('.tableReleves').each(function( index ) {
if(this.childElementCount > 1) {
if ($("#" + this.id).hasClass('dataTable')) {
$("#" + this.id).DataTable.destroy();
}
}
})