销毁DataTable时出现IE错误

时间:2016-09-28 15:47:16

标签: jquery ajax internet-explorer datatables

我在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浏览器上运行。

感谢。

1 个答案:

答案 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();
         }
      }
})