如何撤消“surroundContents”在 JavaScript 中?

发布于 2024-08-08 22:39:43 字数 424 浏览 8 评论 0原文

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

我在想这样的事情:

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

I'm writing a script that needs to move a wrapping node element around on the page. I find that when I do this, I remove the previously wrapped children. How do I unnest the children of a node, so that I can move that parent node elsewhere?

I was thinking something like this:

  var parg = document.getElementById("blah");

  if (parg.hasChildNodes())
   {
     var children = parg.childNodes;
     while (children.length > 0)
     {
      parg.insertBefore(parg.firstChild);
      parg.removeChild(parg.firstChild);
     };
   };

The line that I'm guessing is the problem is the "insertBefore" logic.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚雾 2024-08-15 22:39:43

insertBefore 对元素节点进行操作并采用两个参数,
新节点以及新节点之前的节点。

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

//测试

展开(document.getElementById("blah"));

输入图像描述这里

insertBefore operates on an element node and takes two arguments,
the new node, and the node the new node will precede.

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

//test

unwrap(document.getElementById("blah"));

enter image description here

纸伞微斜 2024-08-15 22:39:43

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

也许是这样的:

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

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

You'll need to iterate over your first-level children and assign their parent to the "wrapper" element's parent.

Something like this, perhaps:

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

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文