如何使用Javascript按字母顺序对表格进行排序,区分大小写?

时间:2015-12-12 06:38:10

标签: javascript sorting

没有jQuery的答案,因为我在这个网站上没有使用它。

我有一般表格的表格

<tbody><tr><td>2</td><td><a href="http://www.anime-planet.com/anime/ah-my-goddess">Ah! My Goddess</a></td></tr></tbody>

我需要访问&#39; a&#39;的内部文字。元素,我不知道该怎么做。我想使用querySelectorAll但显然,因为该表是由javascript通过ajax生成的,所以我不能这样做。这让我不知道如何找到一个元素,更不用说对其文本内容进行排序,例如“啊!”我的女神&#39;。需要注意的是,有更多这样的表行,具有相同的基本模式。

2 个答案:

答案 0 :(得分:0)

不使用jQuery,您可以尝试使用它所基于的函数的根。例如用以下内容替换选择器:

document.querySelectorAll('td').textContent

答案 1 :(得分:0)

我假设您可以通过id引用该表:

var t = document.getElementById(/*table id*/);

var d = t.tBodies[0].rows; // is an HTMLCollection, kinda like an array
d = [...t.tBodies[0].rows]; // converts it into an array of rows

一旦它在一个数组中,你可以对行做类似数组的事情,比如sort()他们

现在,查看第一行d[0]并假设锚点始终位于第二列,锚点可以称为:

var a = d[0].cells[1].getElementsByTagName('a')[0];

并且开/关标签内的文字是:

a.innerHTML; // In this case: 'Ah! My Goddess'

将其中一些放在一起,按字母顺序排序可以是:

var byAnchorText = (a, b) => a.cells[1].getElementsByTagName('a')[0].innerHTML - b.cells[1].getElementsByTagName('a')[0].innerHTML;
var t = document.getElementById(/*table id*/);
Array.sort.apply(t.tBodies[0].rows, byAnchorText);

或类似的东西,您可以根据需要进行修复。