6

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

我在想这样的事情:

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

4

2 回答 2

8

insertBefore 对元素节点进行操作并接受两个参数,即新节点和新节点将在其前面的节点。

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

//测试

展开(document.getElementById(“废话”));

在此处输入图像描述

于 2009-10-23T17:34:59.303 回答
0

您需要遍历您的第一级子级并将其父级分配给“包装器”元素的父级。

像这样的东西,也许:

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

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
于 2009-10-23T17:19:40.367 回答