无法解析数据表 SCRIPT5007:无法设置未定义或空引用的属性“_DT_CellIndex”
Posted
技术标签:
【中文标题】无法解析数据表 SCRIPT5007:无法设置未定义或空引用的属性“_DT_CellIndex”【英文标题】:Not able to resolve Datatable SCRIPT5007: Unable to set property '_DT_CellIndex' of undefined or null reference 【发布时间】:2017-02-04 00:09:26 【问题描述】:我无法解决以下数据表错误:
SCRIPT5007:无法设置未定义的属性“_DT_CellIndex”或 空引用
我尝试查看整个互联网并发现this 是最好的解决方案。但我仍然无法解决这个问题。我在这里错过了什么吗?我是 javascript 新手。
【问题讨论】:
这是为我解决这个问题的answer 【参考方案1】:基本上这个问题是因为 th 与 td 的匹配计数未命中。确保匹配到 td 的数量。希望这会对你有所帮助。
【讨论】:
这对我来说基本上就是这样。添加的列数应与初始化的列数相同。 节省了我的时间 对我来说,我使用 ajax 将数据加载到表中,但在将任何数据加载到表中之前调用了函数$('#TableID').DataTable()
,因此出现了这个问题。所以,我需要在加载表格数据后,在ajax调用的success: function()
中调用这个函数。【参考方案2】:
我们有同样的错误!为我们解决的问题是根据从 0 开始的列数更改 dataTable
初始化中的 target
。
在我们的表格中,我们有 4 列,所以 targets: [3]
$.extend($.fn.dataTable.defaults,
columnDefs: [
targets: [3]
]
);
【讨论】:
【参考方案3】:在我的情况下,连续使用 colspan,单元格的数量与表格标题不匹配,因此显示此错误。您可以添加这些隐藏单元格以消除该错误。
试试这个
<tr>
<td colspan="4">details</td>
<td style="display: none"></td>
<td style="display: none"></td>
<td style="display: none"></td>
</tr>
添加所需的单元格但隐藏它们
【讨论】:
您好,没有详细信息的答案并没有真正的帮助。您能否添加更多详细信息?为什么这会解决问题? 在我的情况下,连续使用 colspan,单元格的数量与表格标题不匹配,因此显示此错误。您可以添加这些隐藏单元格以消除该错误。 编辑你的答案:)【参考方案4】:在这里找到了这个答案:datatable forums
一个简单的错误,表头有一列 " 没有 标题,但该列在表本身中不存在。我不能 看到它不见了(因为没有标题也没有边框)。
成功了吗?
【讨论】:
好像不行.....你知道如何检查我的表格tad标签td是否与我的表格tbody td匹配吗? 嗨 @a7madgamal 让我在 jsbin 上上传代码,但是 .. 下面是 IE 11 卡住的代码:-for ( i=0, iLen=oSettings.aoColumns.length ; i当数据表中没有数据时,我遇到了错误。桌子是空的。添加一条记录后,错误消失了。
【讨论】:
【参考方案6】:我修好了。这是 js 部分与 html。
当我删除html列并忘记删除看起来像这样的js列时出现问题。
"name": "Product", "orderable": true, "searchable": true,
一旦我删除了 js 中的额外列,一切都开始工作了。
【讨论】:
【参考方案7】:解决错误:
无法设置未定义的属性“_DT_CellIndex”
首先我告诉你$("id_tu_tabla").Datatable()
有最少的列数,它是 6。但是如果你有更少,你已经指定它,就像下面的代码:
$('#table').DataTable( columnDefs: [ goals: [4] ] );
【讨论】:
【参考方案8】:似乎很多人都因为 th 和 td 不匹配而得到错误。对我来说,我得到了似乎是逻辑错误的错误。看下面的代码。
注意:这是我在 Angular 7 中试验数据表,增强 *ngFor、ng-container、*ngIf 之类的东西,但别管这些,只看代码结构差异(交换 @ 987654321@ 和 ng-container
)。
表头:
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
<th>Email</th>
<th>Organisation</th>
</tr>
</thead>
这会产生错误:
<tr *ngFor="let user of users; let index = index">
<ng-container *ngIf="showInactiveUsers">
<td>user?.firstName</td>
<td>user?.lastName</td>
<td>user?.email</td>
<td>user?.attributes?.organisation</td>
</ng-container>
<ng-container *ngIf="!showInactiveUsers && user?.enabled">
<td>user?.firstName</td>
<td>user?.lastName</td>
<td>user?.email</td>
<td>user?.attributes?.organisation</td>
</ng-container>
</tr>
像下面这样重新排列代码可以解决错误:
<ng-container *ngFor="let user of users; let index = index">
<tr *ngIf="showInactiveUsers">
<td>user?.firstName</td>
<td>user?.lastName</td>
<td>user?.email</td>
<td>user?.attributes?.organisation</td>
</tr>
<tr *ngIf="!showInactiveUsers && user?.enabled">
<td>user?.firstName</td>
<td>user?.lastName</td>
<td>user?.email</td>
<td>user?.attributes?.organisation</td>
<td *ngIf="user?.enabled">
</tr>
</ng-container>
【讨论】:
【参考方案9】:如果您要求显示带有“未找到记录”消息的行,如下代码
@if(Model.Count==0)
<tr>
<td colspan="3">
No record found.
</td>
</tr>
然后只需简单地删除此条件,因为数据表本身会附加“表中没有可用数据”消息,在我的情况下,它解决了我的错误
【讨论】:
【参考方案10】:我遇到了类似的问题,通过删除列名中的“$”符号得到了解决。希望这会有所帮助。
【讨论】:
【参考方案11】:检查表列的计数和dtColumnDefs
。
如果您有 6 列,那么下面将是您对 dtColumnDefs
的配置。
self.dtColumnDefs = [
DTColumnDefBuilder.newColumnDef(0),
DTColumnDefBuilder.newColumnDef(1),
DTColumnDefBuilder.newColumnDef(2),
DTColumnDefBuilder.newColumnDef(3),
DTColumnDefBuilder.newColumnDef(4),
DTColumnDefBuilder.newColumnDef(5)
];
【讨论】:
【参考方案12】:我遇到了同样的问题。就我而言,我有 5 列,但在可排序的目标中,我设置了 7 列。所以请确保您没有在可订购目标中提到额外的列。
"orderable": false, "targets": [1,2,3,4]
【讨论】:
以上是关于无法解析数据表 SCRIPT5007:无法设置未定义或空引用的属性“_DT_CellIndex”的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript错误:SCRIPT5007:无法获取属性'getElementsByTagName'
SCRIPT5007:无法获取属性“show”的值,对象为null或没有定义
IE9 JavaScript 错误:SCRIPT5007:无法获取属性“ui”的值:对象为空或未定义