使用Array的Javascript中的HTML表排序有效,但是为什么呢?

时间:2019-05-16 13:48:56

标签: javascript html arrays sorting

在此代码中:

let container = document.getElementById('variables');
Array.from(container.querySelectorAll('tr'))
  .sort((a, b) => a.getAttribute("name").localeCompare(b.getAttribute("name"), ))
  .forEach(tr => container.appendChild(tr));
  
<table id="variables">
  <tr name=B>
    <td>B</td>
  </tr>
  <tr name=A>
    <td>A</td>
  </tr>
  <tr name=C>
    <td>C</td>
  </tr>
</table>

我创建一个未排序的HTML表,并使用JavaScript对其进行排序。

我工作了,但是我不明白为什么我没有得到原始数组,然后再进行排序,因为forEach对原始表做了appendChild

此代码背后的魔力是什么?

1 个答案:

答案 0 :(得分:4)

foo.appendChild(bar)bar放在foo的末尾。

由于一个元素不能同时存在于两个位置,因此,如果它已经是另一个元素的子元素,则首先将其从那里删除。

即它与foo.appendChild(bar.cloneNode(true))

不同