你如何在javascript中撤消“surroundContents”?

时间:2009-10-23 16:48:16

标签: javascript removechild

我正在编写一个需要在页面上移动包装节点元素的脚本。我发现当我这样做时,我会移除以前包裹的孩子。如何取消节点的子节点,以便将父节点移动到其他位置?

我在想这样的事情:

  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”逻辑。

2 个答案:

答案 0 :(得分:8)

insertBefore在一个元素节点上运行并接受两个参数, 新节点以及新节点将在其之前的节点。

function unwrap(who){
 var pa= who.parentNode;
 while(who.firstChild){
  pa.insertBefore(who.firstChild, who);
 }
}

//测试

解包(的document.getElementById( “嗒嗒”));

enter image description here

答案 1 :(得分:0)

您需要迭代您的第一级子级并将其父级分配给“wrapper”元素的父级。

这样的事情,也许是:

if ( parg.hasChildNodes() ) {
     var children = parg.childNodes;

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}