无法读取属性' mData'使用带有colspan的DataTables时未定义

时间:2016-04-18 03:23:46

标签: jquery datatables

我使用数据表来显示来自服务器的数据。问题是我在控制台中一直收到错误说:

datatables.min.js:145 Uncaught TypeError: Cannot read property 'mData' of undefined

我已经访问了互联网上与此相关的所有链接,但没有任何内容对我有效。

我确保使用colspans的thead和tbody中的列数相同。

我可能遗漏了一些东西,但在花了相当长的时间之后,我会感激一些帮助。

这是代码的样子

HTML:

<table id="data-table" class="display table" width="100%">
  <thead>
    <tr>
      <th colspan="4" class="center-align solid-left-border" style="border-bottom: none; text-decoration: underline; text-transform: uppercase; padding: 5px 18px;">
        Tier 2 Contributions Report
      </th>
    </tr>

    <tr>
      <th class="left-align solid-left-border" style="border-bottom: none; text-decoration: none; text-transform: uppercase; font-weight: normal; font-weight: normal; padding: 5px 18px; font-size: 12.5px">
        Employer's FIle No/Registration No:
      </th>

      <th colspan="3" class="left-align solid-left-border" style="border-bottom: none; font-weight: normal; padding: 5px 18px; font-size: 12.5px; text-transform: uppercase;">
        <%= company.getSSNITRegistration() || '-' %>
      </th>
    </tr>

    <tr>
      <th class="left-align solid-left-border" style="border-bottom: none; text-decoration: none; text-transform: uppercase; font-weight: normal; padding: 5px 18px; font-size: 12.5px;">
        Name of Employer:
      </th>

      <th colspan="3" class="left-align solid-left-border" style="border-bottom: none; font-weight: normal; padding: 5px 18px; font-size: 12.5px; text-transform: uppercase;">
        <%= company.getName() || '-' %>
      </th>
    </tr>

    <tr>
      <th class="left-align solid-left-border" style="border-bottom: none; text-decoration: none; text-transform: uppercase; font-weight: normal; padding: 5px 18px; font-size: 12.5px;">
        Address of Employer:
      </th>

      <th colspan="3" class="left-align solid-left-border" style="border-bottom: none; font-weight: normal; padding: 5px 18px; font-size: 12.5px; text-transform: uppercase;">
        <%= company.getAddress() || '-' %>
      </th>
    </tr>


    <tr>
      <th colspan="4" style="border-bottom: none;"></th>
    </tr>
  </thead>

  <tfoot>
   <tr>
     <th colspan="2" class="left-align">Totals</th>
     <th class="center-align"><%= addCommas(totals.basicSalary) %></th>
     <th class="right-align"><%= addCommas(totals.contribution) %></th>
   </tr>
  </tfoot>

  <tbody>
    <tr>
      <th class="left-align">Social Sec. No.</th>
      <th class="left-align">Full Name</th>
      <th class="center-align">Basic Salary</th>
      <th class="right-align">Contribution (5%)</th>
    </tr>

    <% employees.forEach(function(employee) { %>
      <tr>
        <td class="left-align"><%= employee.ssnitNumber %></td>
        <td class="left-align"><%= employee.lastName + ', ' + employee.firstName + ' ' + employee.otherNames%></td>
        <td class="center-align"><%= addCommas(employee.basicSalary) %></td>
        <td class="right-align"><%= addCommas(employee.contribution) %></td>
      </tr>
    <% }) %>
  </tbody>
</table>

JS

$('#data-table').DataTable( {
  "bPaginate": true,
  "bLengthChange": true,
  "bFilter": true,
  "bSort": false,
  "bInfo": true,
  "bAutoWidth": false,
  "dom": 'Bfrtip',
  "buttons": [
    'copy', 'csv', 'excel', 'pdf', 'print'
  ]

});

4 个答案:

答案 0 :(得分:3)

此类问题的一般原因是

  1. 标题栏和页脚列之间不匹配。

  2. 正文元素与标题不匹配(一行中的td数应与标题中的<th>匹配)。

  3. 复制表格ID。

  4. 在您的情况下,请将标题(例如社交秒号等)从<tbody>移至<thead>,并且您的页眉和页脚也不匹配请将它们设为相同,因为我看到有4个元素标题中只有3个页脚。

答案 1 :(得分:0)

也有该错误,在我的情况下,这是由于正文中的列标题数量不匹配所致。

答案 2 :(得分:0)

我的团队遇到了类似的问题,我们能够通过删除<td>tfoot标签中的所有colspan,style和class属性来解决。

因此,作为一个起点,我建议删除那些属性。 此外,我认为您的astimezone()标签也可能会引起一些问题。最好先删除它们,然后查看。

答案 3 :(得分:-1)

确保诸如... thead,tbody之类的标签正确使用

祝你好运