JQuery DataTables和ColVis插件出错“无法读取未定义的属性's宽度'

时间:2013-12-19 05:04:27

标签: javascript jquery datatables

将jquery.datatables插件与ColVis插件一起使用,我在删除列时收到此错误:

“无法读取未定义的属性's width'”。我无法在线找到此错误的解决方案。

我不确定导致错误的是什么,虽然我确实有一个我想发布的修复程序,以便其他人遇到此问题。

我正在使用来自http://datatables.net/的jquery.datatables 1.9.4。

5 个答案:

答案 0 :(得分:19)

中的列数时出现此错误
<thead></thead>

中的列数不同
$('#ls-table').DataTable($.extend({}, window.coonDataTableOptions, {
    columns: [
         <here>
    ]
 }));

答案 1 :(得分:4)

在DataTables源代码的第3255行是这行代码:

nThs[i].style.width = o.aoColumns[iVis].sWidth;

在这种情况下,o.aoColumns [iVis]为null,因为索引所代表的列刚被隐藏。看起来我遇到了插件的创建者并不期待的角落情况。上面的代码被调用以响应内部datatables事件,该事件由隐藏列时由ColVis调用的方法触发。解决这个问题需要做的就是将上面的代码更改为:

var column = o.aoColumns[iVis];

if(column != null) {
    nThs[i].style.width = o.aoColumns[iVis].sWidth;
}

不幸的是,这需要编辑核心插件代码,但我会提交错误报告并希望他们尽快解决。与此同时,希望这有助于人们寻找解决方法。

答案 2 :(得分:1)

仅由于填充其中的列而发生此类错误

... DataTable(... “列”:... )

与定义的HTML页面不匹配。具有列数。

.. ..

答案 3 :(得分:0)

$("thead").empty();之后使用mainTable.clear().destroy().draw();

数据表上的问题;一旦从jQuery的数据加载到HTML5“ thead”的数据表jQuery的。 mainTable.clear().destroy().draw();无法删除thead上的数据,因此解决方案是使用jquery .empty()删除它。

不客气:)

答案 4 :(得分:-2)

搜索a.aoColumns[D].sWidth,替换

 var column = a.aoColumns[D];if(column != null) {c.style.width=a.aoColumns[D].sWidth}