Pie*_*ter 2 html javascript dom
我有一个<li>
元素列表:
<ul id="mylist">
<li id="item1">Item 1</li>
<li id="item2">Item 2</li>
<li id="item3">Item 3</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我可以<li>
用replaceChild
一个DOM树修改方法交换两个元素 - 比如item1和item2 吗?它适用于所有浏览器吗?
不,replaceChild会从DOM中删除一个.你要insertBefore
var a = document.getElementById('item1');
var b = document.getElementById('item2');
a.parentNode.insertBefore(b, a);
Run Code Online (Sandbox Code Playgroud)
当然,如果它们首先彼此相邻,它们只会交换它们.
replaceChild
如果你想交换彼此不相邻的那些,你可以利用.
var a = document.getElementById('item1');
var b = document.getElementById('item3');
var after_b = b.nextSibling;
var p = a.parentNode;
p.replaceChild(b,a);
if (after_b) {
p.replaceChild(a, after_b);
} else {
p.appendChild(a);
}
Run Code Online (Sandbox Code Playgroud)