我正在编写一些JS来对HTML表进行排序:HTML表有一个标题行,单击列的标题会根据该列对行进行排序。我的一般算法如下:
现在,我的代码替换了表中的所有innerHTML元素。基本上,在对JS数组进行排序之后,它会触及表的每个节点,重写它的innerHTML值。我觉得可能有更有效的方法来做到这一点,但我想不出来。
编辑:
这是执行上述算法的第(3)部分的代码。我编辑了不相关的部分(只是一些字符串转换)。索引有点奇怪,因为当我将表转换为数组时,我跳过了标题行,因此在重写表时我正在补偿它。
for (var i = 0; i < numRows-1; i++){
for (var j = 0; j < numCols; j++){
var arrCell = tableArr[i][cols[j]];
tableEl.rows[i+1].cells[j].innerHTML = arrCell;
}
}
答案 0 :(得分:2)
您可以从DOM中删除行,进行排序,然后将它们添加回DOM。
var tbody = table.tBodies[0];
var placeholder = document.createElement('tbody');
table.replaceChild(placeholder, tbody);
//sort rows in tbody
table.replaceChild(tbody, placeholder);
答案 1 :(得分:0)
如果数据存储在服务器上 - 我会向服务器发送一个Ajax请求,其中包含排序类型(ASC,DESC等),对服务器上的数据进行排序(使用PHP等),然后接收在JavaScript中排序数据并将表格全新写入。
答案 2 :(得分:0)
您可以使用jQuery及其Datatables plugin。 在datatable语句中,您可以添加
"bSort": true
该作业将由脚本完成。虽然如果你能找到一种纯粹的JS方式,我建议你使用它,这样就不会给你的网页增加无用的重量。