在此代码中:
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
此代码背后的魔力是什么?
答案 0 :(得分:4)
foo.appendChild(bar)
将bar
放在foo
的末尾。
由于一个元素不能同时存在于两个位置,因此,如果它已经是另一个元素的子元素,则首先将其从那里删除。
即它与foo.appendChild(bar.cloneNode(true))