Sorttable.js (сортировка таблиц Javascript) не работает при создании таблицы в javascript
Я пытаюсь использовать пакет sorttable.js для сортировки таблицы HTML при нажатии на заголовок столбца. Я могу заставить это работать нормально, когда таблица объявлена статически в HTML:
<table class="sortable" style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Points</th>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
<tr>
<td>Joe</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Abraham</td>
<td>Jones</td>
<td>4</td>
</tr>
</table>
Однако, когда я создаю таблицу с помощью javascript, функции сортировки больше нет, и я получаю сообщения об ошибках на консоли:
tbl_array = new Array()
tbl_array = [["Firstname","Lastname","Points"], ["Eve","Jackson","94"], ["Joe","Smith","50"], ["Abraham","Jones","4"]]
var body = document.body,
tbl = document.getElementById('summaryTable');
// clear all rows on the table
while(tbl.rows.length > 0){
tbl.deleteRow(0)
}
tbl.style.width = '100px';
tbl.style.border = '1px solid black';
numRows = tbl_array.length
numCols = tbl_array[0].length
// insert each 2D array entry into a table cell
for(var i = 0; i < numRows; i++){
// insert header
if (i == 0){
var header = tbl.createTBody();
var row = header.insertRow();
for (var j=0; j < numCols; ++j){
var cell = document.createElement('th')
cell.appendChild(document.createTextNode(tbl_array[i][j]));
cell.style.border='1px solid black';
cell.style.fontWeight = "bold";
row.appendChild(cell)
}
}
else{
var tr = tbl.insertRow();
for(var j = 0; j < numCols; j++){
var td = tr.insertCell();
td.appendChild(document.createTextNode(tbl_array[i][j]));
td.style.border = '1px solid black';
}
}
}
console.log("tbl", tbl)
Единственное, о чем я могу думать, это то, что я неправильно форматирую таблицу с помощью javascript, но когда я печатал обе таблицы на консоли и проверял их структуры, они были в основном одинаковыми:
<table ...>
<tbody>
<tr ...>
<th>..</th>
<th>..</th>
</tr>
<tr>
<td>..</td>
<td>..</td>
</tr>
</tbody>
</table>
Моя ошибка в том, как я создаю таблицу с помощью JavaScript? Любая помощь будет оценена. Спасибо!
1 ответ
sorttable.js
предполагает, что все таблицы уже находятся в HTML при инициализации; ваша таблица генерируется динамически, поэтому вы должны makeSortable
метод вручную.
Прямо перед вашим console.log
попробуйте вставить это:
sorttable.makeSortable(document.getElementById('summaryTable'));