TypeError: oColumn не определено При использовании библиотеки JQuery Datatables

У меня возникла проблема с тем, чтобы библиотека jQuery Datatables отображалась правильно на моей домашней странице Joomla. http://datatables.net

Скрипт наполовину укладывает мой стол, а затем отказывается (я получаю цвет заголовка таблицы и цвет текста, но нет элементов управления datatables и т. Д.).

Firebug также бросает следующую ошибку:

TypeError: oColumn is undefined 

В моих шаблонах Joomla index.php у меня есть следующее в <head> :

 <script src="./datatables/js/jquery.js" type="text/javascript"></script> <script src="./datatables/js/jquery.dataTables.js" type="text/javascript"></script> <script type="text/javascript"> jQuery.noConflict(); jQuery(document).ready(function() { jQuery('#staff_table').dataTable({ "bLengthChange": true, "bFilter": true, "bSort": true, "bInfo": true, "bAutoWidth": true } ); } ); </script> 

HTML / PHP выглядит так:

 <h3>Members of Staff</h3> <p>If you're looking for a member of staff at Tower Road Academy, you'll find their details here.</p> <table class="staff_table" id="staff_table"> <tr class="staff_table_head"> <th>Name</th> <th>Job Title</th> <th>Email Address</th> </tr> <?php $result = mysql_query("SELECT * FROM itsnb_chronoforms_data_addstaffmember"); while($row = mysql_fetch_array($result)) { echo '<tr>'; echo '<td>' . $row['staff_name'] . '</td><td>' . $row['staff_job'] . '</td><td><a href=mailto:"' . $row['staff_email'] . '">' . $row['staff_email'] . '</a>' . '</td>'; echo '</tr>'; } ?> </table> 

Для корректной работы данных ваши таблицы должны быть сконструированы с использованием тегов <thead> и <tbody> .

Все необходимые DataTables в вашем HTML – это хорошо сформированный (то есть действительный HTML), с заголовком (определенным тегом HTML) и телом (тегом)

Datatable docs

Сортировано это! Оказывается, datatables ОЧЕНЬ строго о html, который он принимает, прежде чем он выдает ошибку. Я добавил теги в свой html, и теперь он работает, также обратите внимание, что у вас должны быть теги для столбцов заголовка, а не теги, так как это также вызывает ошибку.

Теперь код html выглядит так:

 <h3>Members of Staff</h3> <p>If you're looking for a member of staff at Tower Road Academy, you'll find their details here.</p> <table class="staff_table" id="staff_table"> <thead> <tr class="staff_table_head"> <th>Name</th> <th>Job Title</th> <th>Email Address</th> </tr> </thead> <?php $result = mysql_query("SELECT * FROM itsnb_chronoforms_data_addstaffmember"); while($row = mysql_fetch_array($result)) { echo '<tr>'; echo '<td>' . $row['staff_name'] . '</td><td>' . $row['staff_job'] . '</td><td><a href=mailto:"' . $row['staff_email'] . '">' . $row['staff_email'] . '</a>' . '</td>'; echo '</tr>'; } ?> </table> 

и вызов jquery etc выглядит так:

 <script src="./datatables/js/jquery.js" type="text/javascript"></script> <script src="./datatables/js/jquery.dataTables.js" type="text/javascript"></script> <script type="text/javascript"> jQuery(document).ready(function() { jQuery('#staff_table').dataTable({ "bLengthChange": true, "bFilter": true, "bSort": true, "bInfo": true, "bAutoWidth": true } ); } ); </script> 

Надеюсь, это поможет всем вам, по крайней мере, получить от него намек.

http://datatables.net/forums/discussion/comment/42607

Моя проблема: TypeError: col undefined.

Обобщенный ответ:

Количество элементов TH в элементе TR в элементе THead таблицы ДОЛЖНО быть равнозначным количеству элементов TD (или количеству столбцов в строках таблицы) внутри элемента (ов) TR вашего тела в таблице.

Вы можете прочитать пояснение ниже:

Проблема состояла в том, что я не поставил достаточно элементов Th или Td в секции thead равным количеству столбцов, которые я печатаю как Td-элементы внутри элементов Tr в разделе TBody.

Следующий код дал мне ошибку.

 <thead> <tr> <th> Heading 1</th> <th> Heading 2</th> </tr> </thead> <tbody> <tr> <td> Column 1 </td> <td> Column 2</td> <td> Column 3</td> </tr> </tbody>" 

Но просто добавление еще одного элемента Th в элемент Tr внутри элемента THead заставил его работать как шарм! 🙂 И я получил подсказку из приведенной выше ссылки.

Кроме того, я обнаружил, что все элементы TH в элементе TH Thead также могут быть элементами TD, так как это также допустимый HTML на требуемый уровень с помощью данных jQuery DataTables!

Надеюсь, я помог некоторым из вас сэкономить ваше время! 🙂

Попробуй это:

 jQuery('#staff_table').dataTable({ "bPaginate": true, "bLengthChange": true, "bFilter": true, "bSort": true, "bInfo": true, "bAutoWidth": true, "aoColumns": [ null, null //put as many null values as your columns ] });