数据表:TypeError:我未定义

Posted

技术标签:

【中文标题】数据表:TypeError:我未定义【英文标题】:DataTables: TypeError: i is undefined 【发布时间】:2017-04-07 15:57:22 【问题描述】:

我有一张如下表

表格作为行跨度,因为对于某些用户,我需要有 2 行(就像你在“D”列看到的那样)

我正在尝试使用数据表:

<table class="table table-bordered table-hover table-striped" id="myTable">
(...)
</table>

我在代码开头这样称呼它:

 <script>
    $( document ).ready(function() 
         $('#myTable').DataTable();
    );
</script>

但我有这个错误:

TypeError: i 未定义

而且表不像是数据表类型!

也许它不适用于行跨度? 有什么想法吗??

【问题讨论】:

您能告诉我们更多关于 TypeError 出现在哪里的信息吗?你确定这是你的代码还是插件出错了? i 出现在哪里? 你能把表格的html贴出来吗,你用的是什么版本的jquery和datatables? 数据表不支持行跨度和列跨度。 datatables.net/forums/discussion/31366/… 嗯这是我的恐惧@DanWilson。所以我需要重新考虑我的问题并丢弃数据表。 你可以像这样使用hack来实现colspan:Hack for colspan in datatable 【参考方案1】:

FWIW 如果您在每一行中没有相同数量的 &lt;td&gt;&lt;/td&gt; 元素,您也可能会收到此错误。确保您没有添加任何带有导航按钮或链接的行或任何可能与其他行格式不同的内容。

【讨论】:

【参考方案2】:

jQuery DataTables 插件默认不支持ROWSPAN 属性。然而,有一个用于 jQuery DataTables 的 RowsGroup 插件将单元格组合在一起,使它们看起来就像使用了 ROWSPAN 属性。

有关代码和演示,请参阅 this example。

更多详情请见jQuery DataTables – ROWSPAN in table body TBODY。

【讨论】:

【参考方案3】:

供未来的推荐人使用。

这是因为您使用的是不支持的Rowspancolspan

如果你想使用 colspan 你可以在&lt;/tbody&gt;之外使用它。

谢谢。

【讨论】:

【参考方案4】:

如果您的表格格式不正确,就会出现此问题,例如您应该有 &lt;table&gt; &lt;thead&gt; &lt;th&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;

然后表格的 id 不应与同一页面上任何其他东西的 id 重叠。否则,您将收到错误,例如 i 未定义或 c 未定义。

【讨论】:

【参考方案5】:

我会说您的表不是数据表,因为您有未定义的数据,并且所指的“i”是 DataTable 循环的内部迭代器,使用行跨度是问题 - 我会重新设计您的表以每条数据的一整行(在您的示例中,250 需要一整行,除 D 之外的所有其他列都有重复值) - 完全可以使用 css 隐藏为相同视觉效果而重复的值,这将允许数据表过滤仍然对这些行起作用(尽管当过滤这些“额外”行时,您可能需要一些钩子来显示隐藏的数据)。

【讨论】:

我认为您的评论最接近解决根本原因。我的经验导致我来到这里是由于一些初始化 columnDefs 使用了错误的列索引,该索引大于表中的列数。公平地说,当您引用不存在的单元格、列或行时,dataTables 可能会遇到此错误。【参考方案6】:

我遇到了同样的问题。错误的主要原因是由于使用了 colspan & rowspan。因为 jQuery DataTables 插件不支持它们,因此导致错误。

TypeError: i 未定义

因此,如果您在 &lt;tbody&gt;&lt;/tbody&gt; 内的任何 &lt;tr&gt;&lt;/tr&gt; 内使用任何 colspan 或 rowspan,请确保每个 &lt;tr&gt;&lt;/tr&gt; 的每一行都具有相同的 &lt;td&gt;&lt;/td&gt; 编号。如果不是,则重复 &lt;td style='display:none'&gt;&lt;/td&gt; 以匹配相同的 no 例如

<table border='1' cellspacing='2'>
   <thead>
      <tr>
         <td>A</td>
         <td>B</td>
         <td>C</td>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td rowspan="2">1</td>
         <td rowspan="2">name</td>
         <td>200</td>
         <td style='display:none'></td>
         <td style='display:none'></td>
      </tr>
      <tr>
         <td >300</td>
         <td style='display:none'></td>
         <td style='display:none'></td>
      </tr>
   </tbody>
</table>

我认为遵循上述建议肯定会对您有所帮助。

【讨论】:

以上是关于数据表:TypeError:我未定义的主要内容,如果未能解决你的问题,请参考以下文章

emscripten + sdl = 抛出异常:TypeError:无法设置未定义的属性“widthNative”

Python - TypeError:'int'对象不可迭代

谷歌或工具:AddVariableMinimizedByFinalizer TypeError

reportComplaints.js: Uncaught TypeError: Cannot read property 'message' of undefined

为啥 TypeError 上的 JSON.stringify 返回一个空对象 [重复]

挂载钩子中的错误:“TypeError:没有'new'就不能调用类构造函数节点”