遗漏的类型错误:无法读取的未定义的属性“的className”(Uncaught TypeError

2019-06-25 19:35发布

以下错误被抛出谷歌浏览器的开发者工具:

遗漏的类型错误:无法读取的未定义的属性“的className”

其上被抛出的错误代码是:

var oTable = $('#resultstable').dataTable({
                            "bAutoWidth" : true,
                            "iDisplayLength" : 10,
                            "bFilter" : false,
                            "bLengthChange" : false
                        });

resultstable是在HTML表的ID:

<table cellpadding="0" cellspacing="0" border="0" id="resultstable"
                    name="resultstable" class="display datatable">

奇怪的是,该表标签后有一个if语句。 该表运行完全正常和CSS显示正确时,该程序被送入否则if{}部分,但它抛出了上面的错误,当它是在没有应用CSS if{}部分。

请帮忙!

Answer 1:

对方的回答让我在正确的轨道上。

更简洁地说,错误是,我是在创建表是不正确的。

我的标题列,并没有与我行的列匹配(当然是THEAD内)(在TBODY内)

在我的情况,我有头内列太多。



Answer 2:

另一个可能的原因是,如果你列出在“aoColumnDefs”属性的详细列以外还有表“TD”的元素。

var yourTable = $('#product-search-results-table').dataTable({
    // If you only have three columns in the HTML table, then this line will cause an error, because it lists four columns in "aoColumnDefs".
    "aoColumnDefs": [{ "bSortable": false, "aTargets": [0, 1, 2, 3] }]
});


Answer 3:

数据表要​​求你的HTML表格是完美的。 我发现,我得到这个错误时,我没有等量的<th><td> 确保你没有额外的头。



Answer 4:

我得到了一个相同的错误,以你现在得到一个。 我曾经使用所选库遇到了一个非常类似的错误。 问题是(在选上的情况下),与ID的[]正在使用的字符,从而混淆CSS选择器和ID之间的JavaScript(记住,CSS,我们可以使用[]指定的属性)。

在数据表的情况下,然而,我注意到,数据表脚本本身是在前面加上class = " "在中的每一个tr元素的第一个元素之前tbody

这样做的原因是因为从PHP输出HTML有一个逻辑上的错误。 该断层代码:

<?php
for ($currentRow = 0 ; $currentRow <= $query_length; $currentRow++) {
        ?>
        <tr>
        <?php
        list($job_id, $company_id, $job_title, $industry_id, $profession_int, $job_openings, $job_city, $job_salary_start, $job_end_date, $job_start_date, $job_skills, $company_name, $isConfidential, $job_experience_level) = dbRow($query_results, $currentRow);
      echo "<td class = \"detailed-job-row\">" . $job_title . "</td>";
      echo "<td class = \"detailed-job-row\">" . $company_name . "</td>";
      echo "<td class = \"detailed-job-row\">" . $industry_id . "</td>";
      echo "<td class = \"detailed-job-row\">" . $profession_int . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_openings . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_city . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_salary_start . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_end_date . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_start_date . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_skills . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_experience_level . "</td>";
      ?>
        </tr>
        <?php  
     } ?>
    </tbody>
  </table>
<?php
}
?>

有一个错误在很长很长表的底部,表明Postgres的无法跳转到行208这告诉我,我需要停止在循环i - 1 ,或$currentRow - 1

因此,固定,工作代码:

<?php
for ($currentRow = 0 ; $currentRow <= $query_length - 1; $currentRow++) {
        ?>
        <tr>
        <?php
        list($job_id, $company_id, $job_title, $industry_id, $profession_int, $job_openings, $job_city, $job_salary_start, $job_end_date, $job_start_date, $job_skills, $company_name, $isConfidential, $job_experience_level) = dbRow($query_results, $currentRow);
      echo "<td class = \"detailed-job-row\">" . $job_title . "</td>";
      echo "<td class = \"detailed-job-row\">" . $company_name . "</td>";
      echo "<td class = \"detailed-job-row\">" . $industry_id . "</td>";
      echo "<td class = \"detailed-job-row\">" . $profession_int . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_openings . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_city . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_salary_start . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_end_date . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_start_date . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_skills . "</td>";
      echo "<td class = \"detailed-job-row\">" . $job_experience_level . "</td>";
      ?>
        </tr>
        <?php  
     } ?>
    </tbody>
  </table>
<?php
}
?>

执行这一变化让数据表正确执行。

所以,虽然我不能提供一个有效的解决方案,我建议你看看你的HTML标记,因为这可能是你的问题的来源(例如,你的表有tbody ?)。



Answer 5:

在我的特定情况下,我曾与界限为我的元素外数组索引设置aTargets属性。

$('.datatable').dataTable({
  aoColumnDefs: [
    {
      bSortable: false,
      aTargets: [0, 6]
    }
  ],
  aaSorting: []
});

这种设置,有7 TD列,但只有6有它更改为以下修正它:

$('.datatable').dataTable({
  aoColumnDefs: [
    {
      bSortable: false,
      aTargets: [0, 5]
    }
  ],
  aaSorting: []
});


Answer 6:

这是因为当你声明之前使用DOM第一负荷引发此错误。

这个错误我有一个解决方案写在下面:

您可以添加,如果情况特殊元素不未定义像下面

if(document.getElementsByTagName('button') !== undefined){
  // and write your needed code here
}


Answer 7:

遇到类似的问题。 根情况是,虽然dataTable的即将起飞表的控制,我们的代码也试图操纵表的性能的同时。 该错误信息不会这么说,但是,一旦表留给被dataTable的单独管理,问题就消失了。



文章来源: Uncaught TypeError: Cannot read property 'className' of undefined