当前位置: 首页 > 知识库问答 >
问题:

当表头单元格中存在colspan时,DataTables抛出错误

戚英逸
2023-03-14

我得到以下错误时使用colspan在我的th标签。

Uncaught TypeError: Cannot read property 'mData' of undefined

通常,当表单元格的数量在每一行中不相等时,会发生此错误,但情况并非如此。这是我的代码:

<table id="foo">
<thead>
    <tr>
        <th colspan="5">asdf</th>
    </tr>
</thead>

<tbody>

    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
    </tr>

</tbody>
</table>

<script>
    $('#foo').DataTable();
</script>

下面是codepen中的一个示例:https://codepen.io/anon/pen/EQOVMe?editors=1111

使用jQuery 1.12.3和数据表1.10.16

有什么想法吗?

共有2个答案

燕博文
2023-03-14

您只需在表的AD中使用两个tr即可。它与通常在表中使用colspan和rowspan没有什么不同。您可以在这里看到JSFIDLE。

<table width="100%" id="example">
  <thead style="background:#C0C0C0;">
    <tr>
      <th colspan="5">first headline</th>
    </tr>
    <tr>
      <th style="padding-left: 15px;"> Id </th>
      <th> Product Name </th>
      <th> Total Events </th>
      <th> Total Revenue </th>
      <th> Rental Time </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Brielle Williamson</td>
      <td>Integration Specialist</td>
      <td>$372,000</td>
      <td>New York</td>
      <td>4804</td>
    </tr>
    <tr>
      <td>Herrod Chandler</td>
      <td>Sales Assistant</td>
      <td>$137,500</td>
      <td>San Francisco</td>
      <td>9608</td>
    </tr>
  </tbody>

</table>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>

$(document).ready(function() {
    $('#example').DataTable();
} );
季凡
2023-03-14

根据这里的文档,Datatables在标题中支持colspanrowspan,但需要注意。

每个列必须有一个TH单元格,该单元格对于要添加的侦听器是唯一的。

我想出了一个黑客解决方案,我不知道这是否是最好的解决方案,但它确实提供了一个可行的解决方案。

创建两个标题行,第一个标题行使用colspan属性,第二个标题行使用所有单独的列。然后应用cssdisplay:none隐藏行。这将允许datatable初始化而不会出错。但是,我不确定它是否会对其他功能造成任何副作用。

使现代化

最初,我使用css应用了show: no,但是这个解决方案没有使用容器的全宽度绘制表格。所以我修改了这个,以便在表初始化和绘制后在代码中应用样式。这允许它以完整的容器宽度显示。

$(document).ready(function() {
  $('#foo').DataTable();
  $("tr.hideme").css({"display" : "none"});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.16/css/jquery.dataTables.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.16/js/jquery.dataTables.min.js"></script>

<table id="foo">
  <thead>
    <tr>
      <th colspan="5">asdf</th>
    </tr>
    <tr class="hideme">
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>

  <tbody>

    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
    </tr>

  </tbody>
</table>
 类似资料:
  • 我试图在配置单元中执行select*from db.abc操作,此配置单元表是使用spark加载的 “它不工作”显示错误: 错误:java.io.IOException:java.lang.IllegalArgumentException:bucketId超出范围:-1(状态=,代码=0) 我需要在spark-submit或shell中添加任何属性吗?或者使用spark读取此hiv e表的另一种方

  • 问题内容: 我有以下html页面: 在除Internet Explorer(8)以外的所有浏览器中,内容为“ x”的单元格的宽度为100px,相邻单元格填充表的其余部分。在Internet Explorer 8中,它要大得多,它的大小取决于设置了colspan =“ 2”的单元格中有多少文本。IE中有此错误的修复程序吗? 问题答案: 这是我在IE8中宽度失败的结果:

  • 当我试图从我的thymeleaf html表单中保存一个Date输入到控制器时,我收到一条错误消息。它似乎是作为字符串从表单中发送的,但我希望它作为Date发送。我设置了输入类型=date,所以我不确定它为什么出错。这是错误: 下面是该部分的html代码,expirationDate是我发送回控制器的卡对象的一个属性: 这是控制器。获取日期值并在表单中预先填写可以很好地工作,但由于某种原因,当我提

  • 问题内容: 我有以下代码: 非常简单。如何为带有的元素添加colspan(或等价的colspan)? 问题答案: 据我所知,缺少colspan / rowspan只是的限制之一。

  • 尝试获取表元数据时出错。 使用:JOOQ 3.14.0,PostgeSQL 12,PostgreSQL驱动42.2.10 示例: 错误(这不是整个错误,但其余的是相似的): 示例表创建脚本: 最初,我的目标是获取表索引,这很好。我试图将JOOQ从3.13.1更新到3.14.0,并使用数据库中的不同表进行了测试,但没有成功。

  • 我目前正在使用Apache POI将电子表格转换为HTML。 虽然我能够构造一个体面的HTML与常用的API方法的POI。我在实现符合我要求的格式方面受到限制。 当当前单元格值较长时,单元格值可能溢出到下一个单元格而不合并相邻单元格。这是用于理解的图像。