2つのノードの位置を入れ替えます。
内部的に Node#replaceChild
, Node#appendChild
, Node#insertBefore
を使用している関係上、下記制約があります。
- 2つのノード間に親子関係、祖先関係が成立する場合には入れ替えられません。
- 2つのノードはそれぞれ親ノードが存在しなければなりません。従って、
Attr
,Document
,DocumentFragment
,Entity
,Notation
ノードを入れ替えることは出来ません。
第一引数、第二引数で指定したノードの位置を入れ替えます。
<p id="p1">paragraph1</p>
<p id="p2">paragraph2</p>
<script>
swapNode(document.getElementById('p1'), document.getElementById('p2'));
</script>
対象は要素ノードである必要はなく、例えば、テキストノードと要素ノードを入れ替える事も可能です。
<p id="p3">text<span>span1</span><span>span2</span></p>
<script>
var p3 = document.getElementById('p3');
swapNode(p3.firstChild, p3.lastChild);
</script>