销毁 DataTable 时出现 IE 错误

Posted

技术标签:

【中文标题】销毁 DataTable 时出现 IE 错误【英文标题】:IE errors when destroying DataTable 【发布时间】:2017-02-06 17:01:10 【问题描述】:

我的项目在 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;    

更新或添加新数据后,我用它来更新我的数据表

if(toDestroy) 
    $('.tableReleves').each(function( index ) 
        if(this.childElementCount>1)     
            $("#" + this.id).DataTable.destroy()
        
)

(toDestroy变量用于避免在页面加载过程中调用该部分)

这在 chrome 或 Firefox 上运行良好,但在 IE 上显示错误。

无法获取属性“样式”的值:对象为空或 未定义

我尝试了一些方法,例如 draw()、clear(),但在三个 Web 浏览器上都没有任何效果。

谢谢。

【问题讨论】:

【参考方案1】:

虽然这是一个非常古老的帖子,但由于我遇到了同样的问题,所以我在这里标记了我所做的解决方案。我的代码在除 IE 之外的其他浏览器中也能正常工作。如果class datatable 没有与table 标签相关联,IE 会出现破坏数据表函数的问题。

在销毁之前检查表有classdatatable。按照此处所述更改您的代码。

if(toDestroy) 
    $('.tableReleves').each(function( index ) 
        if(this.childElementCount > 1)    
          if ($("#" + this.id).hasClass('dataTable')) 
            $("#" + this.id).DataTable.destroy();
         
      
)

【讨论】:

以上是关于销毁 DataTable 时出现 IE 错误的主要内容,如果未能解决你的问题,请参考以下文章

Terraform:尝试销毁 EKS 集群时出现“错误:删除 S3 存储桶时出错”

获取错误:为viewPager适配器执行notifyDataSetChanged时出现“java.lang.IllegalStateException:Activity已被销毁”

从画布读取时出现 IE9 安全错误(非跨域)

设置 innerhtml 时出现 IE 未知运行时错误

Selenium:启动 IE 时出现意外错误。浏览器缩放级别设置为 122%。应该设置为 100%

复制表时出现约束异常?