javascript - 展平嵌套的 HTML DOM 节点

标签 javascript html dom

给定一个像这样的 HTML 片段:

<div>
  <div>
    <h2>Hello</h2>
    <p>Hello world</p>
  </div>
  <h3>Hello 2</h3>
</div>

我想将其“压平”为:

<div></div>
<div></div>
<h2>Hello</h2>
<p>Hello world</p>
<h3>Hello 2</h3>

如何使用 Javascript/jQuery 做到这一点?

最佳答案

for (var i = 0; i < document.body.children.length; i++) {
    var e = document.body.children[i];
    for (var child of e.children) {
        document.body.appendChild(child);
    }

}

因为 document.body.children 是一个“实时”集合,它会随着您将项目附加到正文而发生变化,因此您的正文本身将充当要在 a 中处理的元素的队列。横向遍历。

(我混合循环类型是因为我不能 100% 确定迭代器与实时集合的工作方式相同,而且我不在计算机上进行检查。如果我或某人可以确认 for ( document.body.children 的 var e) 工作方式相同,我将更新解决方案。)

关于javascript - 展平嵌套的 HTML DOM 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49967843/

相关文章:

jquery - 如何创建与 m.facebook.com 风格相似的网页

javascript - 如何隐藏不包含文本的 DOM 元素?

javascript - 从 iFrame 内部加载的外部页面访问 IFrame 元素

javascript - 如何在javascript中根据外键检索数据

Javascript 到 java 代码不工作

html - CSS3 : responsive centered row with variable size outter-elements

JavaScript:字符串与数字进行比较

php - 从解析的 HTML 表构建数组

javascript - 如何刷新javascript中的特定元素

javascript - jquery提交功能不起作用