我正在编写一个需要在页面上移动包装节点元素的脚本。我发现当我这样做时,我会移除以前包裹的孩子。如何取消节点的子节点,以便将父节点移动到其他位置?
我在想这样的事情:
var parg = document.getElementById("blah");
if (parg.hasChildNodes())
{
var children = parg.childNodes;
while (children.length > 0)
{
parg.insertBefore(parg.firstChild);
parg.removeChild(parg.firstChild);
};
};
我猜测的问题是“insertBefore”逻辑。
答案 0 :(得分:8)
insertBefore在一个元素节点上运行并接受两个参数, 新节点以及新节点将在其之前的节点。
function unwrap(who){
var pa= who.parentNode;
while(who.firstChild){
pa.insertBefore(who.firstChild, who);
}
}
//测试
解包(的document.getElementById( “嗒嗒”));
答案 1 :(得分:0)
您需要迭代您的第一级子级并将其父级分配给“wrapper”元素的父级。
这样的事情,也许是:
if ( parg.hasChildNodes() ) {
var children = parg.childNodes;
for ( child in children ) {
child.parentNode = parg.parentNode;
}
}