我在处理动态创建的层级元素时遇到了一点问题。
一直在尝试使用insertBefore
来改变它们的位置,但是没有成功,没有出现任何错误,但是元素还是在另一个元素下面。
我有一个函数,它创建一个名为dice-window-wrapper
的类,并将其添加到page-content-wrapper
中。
var outerDiv = createElementWithClass('div', 'dice-window-wrapper'),
innerDiv = createElementWithClass('div', 'dice-menubar-wrapper');
outerDiv.appendChild(innerDiv);
document.getElementById("page-content-wrapper").appendChild(outerDiv);
我得到了打印的代码 <div class="dice-window-wrapper">...</div>
这里没有问题。
然后我想使用这个函数添加一个无序列表,其中包含一些<li>
标签:
icon_ul = createElementWithOutClass('ul');
var icon_ul = document.getElementById("page-menu-wrapper").appendChild(icon_ul);
icon_li = createElementWithId('li','icon-dice');
icon_ul.appendChild(icon_li);
document.getElementById("ul");
打印出来的结果将是<ul><li id="icon-dice"></li></ul>
问题就在于,<div class="dice-window-wrapper">...</div>
应该放在<ul><li id="icon-dice"></li></ul>
的后面。
但即使我将icon_ul
函数中的appendChild
改为insertBefore
,似乎也没有任何变化。
div
在page-content-wrapper
中,而你的ul
在page-menu-wrapper
中,所以你不能强制ul
在div
的上方或下方,因为它们的顺序首先由其父元素确定。 - Passerbya.insertBefore(b,c)
<-- 在这里,a
必须是c
的父元素,对吧? :P - Cerbrus