您可以使用
insertAdjacentElement而不是appendChild
更好地控制元素相对于目标元素的位置。
语法:targetElement.insertAdjacentElement(position, element)
. 它有四个位置代码:
- 'beforebegin':在 targetElement 本身之前。
- 'afterbegin':就在 targetElement 内部,在它的第一个孩子之前。
- 'beforeend':就在 targetElement 内部,在它的最后一个孩子之后。
- 'afterend':在 targetElement 本身之后。
它显示为:
//beforebegin
<p>
//afterbegin
foo
//beforeend
</p>
//afterend
在您的情况下,您可以将代码编写为:
document.getElementById('id2').insertAdjacentElement('beforebegin', document.getElementById('id3'));
请注意,通过这种方式,您不需要引用父(容器)元素!
还要考虑您的元素比 id2、id3 多,例如:id4、id5、id6。现在,如果你想在 id2 之后重新定位例如 id5,它很简单:
function changePosition() {
document.getElementById('id2').insertAdjacentElement('afterend', document.getElementById('id5'));
}
<div id='container'>
<div id='id1'>id1</div>
<div id='id2'><u>id2</u></div>
<div id='id3'>id3</div>
<div id='id4'>id4</div>
<div id='id5'><b>id5</b></div>
<div id='id6'>id6</div>
</div>
<p><input type='button' onclick="changePosition()" value="change position"></p>