ノードの並べ替えはそれほど単純ではありません。邪魔になる可能性のある他のノードに対処する必要がある場合があります。とにかく、NodeList または HTMLCollection を受け取り、それを配列に変換し、並べ替えてから、ノードを元の順序に戻す関数を次に示します。要素は親要素の下部に戻されるため、他の要素はすべて上部に配置されることに注意してください。とにかく、適応できるアプローチを示しています。
DOM メソッドを使用する方法を含め、他にも多くの方法がありますが、マークアップの変更に基づくものには注意してください。また、要素の複製には注意してください。これは、リスナーに望ましくない副作用をもたらす可能性があるためです (ブラウザーや追加方法によって、要素が削除される場合とされない場合があります)。
<script type="text/javascript">
function getText(el) {
return el.textContent || el.innerText || '';
}
function sortElements(nodeList) {
// Assume there's a common parent
var node, parentNode = nodeList[0].parentNode
// Define a sort function
function sortEls(a, b) {
var aText = getText(a);
var bText = getText(b);
return aText == bText? 0 : aText < bText? -1 : 1;
}
// Convert nodelist to an array and remove from the DOM at the same time
var a = [], i = nodeList.length;
while (i--) {
a[i] = parentNode.removeChild(nodeList[i]);
}
// Sort the array
a.sort(sortEls);
// Put elements back in order
i = 0;
while (node = a[i++]) {
parentNode.appendChild(node);
}
}
</script>
<div>0</div>
<div>4</div>
<div>2</div>
<div>3</div>
<div>5</div>
<button onclick="sortElements(document.getElementsByTagName('div'))">Sort</button>