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 JS自定义基于文本内容对表进行排序_Javascript_Sorting - Fatal编程技术网

Javascript JS自定义基于文本内容对表进行排序

Javascript JS自定义基于文本内容对表进行排序,javascript,sorting,Javascript,Sorting,我已经在这方面工作了很长时间,但取得了成功。我有一个生成的表,我需要根据textContent重新构建和排序 初始表格ex <table> <thead> <tr><th>Rank</th></tr> <tr><th>ID</th></tr> <tr><th>Pts</th></tr> </thead> <tb

我已经在这方面工作了很长时间,但取得了成功。我有一个生成的表,我需要根据textContent重新构建和排序

初始表格ex

<table>
<thead>
<tr><th>Rank</th></tr>
<tr><th>ID</th></tr>
<tr><th>Pts</th></tr>
</thead>
<tbody>
<tr><td>雙黑鑽石合作夥伴</td></tr>
<tr><td>黃金合作夥伴</td></tr>
<tr><td>黑鑽石合作夥伴</td></tr>
</tbody>
</html>
我想基于字符串比较构建一个新表。我可以用数组(正确的顺序)比较表中的每个字符串,但是当我创建新表时,顺序不会改变


感谢您的反馈。泰

你所做的是相反的,实际上你应该先循环
数组,然后循环
tr
数组,因为
tr
依赖于
(位置信息),而不是相反

for(l = 0; l < ranks.length; l++){

    for (i = 0; i < tr.length; i++){

        let txt = tr[i].children[0].querySelector('a').textContent;

        if( ranks.indexOf(txt) == 0 ){

          var newIndex = ranks.indexOf(txt);
          table.appendChild(tr[i]);
          ranks.shift(); // pop the top item off ranks array
        }
    }
} 
for(l=0;l
下面是它的工作原理

在列上循环-->在tr上循环

在每个内部循环迭代(of
tr
)中,检查
i
th
tr
项是否与
列组
数组第一个位置的文本匹配


如果是,请将其粘贴到
中,并
列中删除最上面的项
(这样您可以在后续循环中使用相同的逻辑)

您是否可以共享您现有的JS,让我们了解您当前如何尝试重新绘制表?
for(l = 0; l < ranks.length; l++){

    for (i = 0; i < tr.length; i++){

        let txt = tr[i].children[0].querySelector('a').textContent;

        if( ranks.indexOf(txt) == 0 ){

          var newIndex = ranks.indexOf(txt);
          table.appendChild(tr[i]);
          ranks.shift(); // pop the top item off ranks array
        }
    }
}