【发布时间】:2016-10-28 17:55:15
【问题描述】:
我有以下问题:
我必须对 XHTML 表进行排序,所以我需要访问第一个列。然后对行进行排序。我的桌子看起来是这样的:
<table id="output">
<tr>
<td>Something</td>
<td>Element</td>
<td>No idea what else</td>
</tr>
<tr>
<td>A Something</td>
<td>Second element </td>
<td>No idea what else</td>
</tr>
...
</table>
结果应该是这样的:
A Something Element No idea what
Something Second element No idea what
所以...我用 DOM 树做这个,这是我遇到问题的函数:
var compare=function(a, b) {
var x=a.firstChild.data;
var y=b.firstChild.data;
if(x>y) return -1;
else if(y<x) return 1;
else return 0;
}
var sort=function() {
var table=document.getElementById("output");
var elementList=document.getElementsByTagName("tr"); //The node list
var array_table=new Array();
for(var i=0; i<elementList.length; i++) {
array_table.push(elementList[i]);
}
Here I need access to the td[0] in every tr-Element in the array.
But with array_table.getElementsByTagName and the ready
sort()-Function in JavaScript there is an error,that
getElementsByTagname is not a function.
//Evtl. appending at the end
for(var j=0; j<array_table.length;j++){
table.appendChild(array_table[j]);
}}
我的问题:如何访问每行中的第一个 <td> 元素并比较文本? (我不允许使用 jQuery 或任何库)
【问题讨论】:
-
使用 jquery 会更容易。只需使用 $('tr').children[0].text()
-
您可以将 querySelectorAll 与合适的选择器一起使用,或者您可以只遍历行并获取第一个单元格的内容。 jQuery 解决方案实际上并没有太多额外的代码(几行?)(并且您节省了 100kb 的库)。
-
@RobG for(i=0; i
标签: javascript sorting dom xhtml html-table