Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript按字母顺序区分大小写对表进行排序?_Javascript_Sorting - Fatal编程技术网

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

如何使用Javascript按字母顺序区分大小写对表进行排序?,javascript,sorting,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> 2 我需要访问“a”元素的内部文本,但我不确定如何执行此操作。我想

没有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>
2

我需要访问“a”元素的内部文本,但我不确定如何执行此操作。我想使用querySelectorAll,但显然,因为表是由javascript通过ajax生成的,所以我不能这样做。这让我无法确定如何访问a元素,更不用说对其文本内容进行排序,例如“啊!我的女神。需要注意的是,有更多这样的表行,具有相同的基本模式

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


document.querySelectorAll('td').textContent

我假设您可以通过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()
them

现在,查看第一行
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);

或者类似的事情,您可以根据自己的需要进行修复。

您需要创建一个绑定到ajax返回调用的回调,这样您就不会在填充表之前对表进行排序。现在的问题是,我不知道如何对表进行排序。如果这确实是你所说的,我会在那时修复它,但现在,我不知道如何访问a元素。在你之前,没有人尝试使用纯JavaScript从HTML获取元素,这是非常令人惊讶的。。。你试过搜索吗?是的,我已经搜索过了。问题是我如何尝试访问它。通常情况下,querySelectorAll不会有问题,我可以直接向下搜索以访问正确的内容。但这只适用于非活动节点列表,而这一个是活动的,因此我无法访问正确的元素(我可以想到)。