javascript - 如何遍历 DOM 并显示所有标签?

标签 javascript html dom

我想遍历 DOM 树,并显示它的所有元素及其绘图。 我坚持这个解决方案,但它很糟糕。我需要做一个递归函数,但我不擅长。

Result of program

const First = document.querySelector("*");
  for (var i = 0; i < First.children.length; i++) {
      console.log(First.children[i]);
  for (var j = 0; j < First.children[i].children.length; j++) {
    if (First.nodeType == 1) {
       console.log(First.children[i].children[j]);
    }
  }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
  <h1>Header</h1>
  <p>Some text
     <a href="#">References</a>
  </p>
  <ul id="myList">
    <li>One</li>
    <li>Two</li>
    <li>Tree</li>
  </ul>
</body>
</html>

最佳答案

这是一个递归实现,它检查每个“父”元素以查看它是否有超过 0 个子元素。如果是这样,遍历子项并调用函数并设置"new"父项。

function recursiveTagLister(parent = document.body, depth = 0){
  const indentation = (new Array(depth)).fill('&nbsp;').join("");
  console.log(indentation + parent.tagName);
  if(parent.children.length > 0){
    Array
    .from(parent.children)
    .forEach(item=>recursiveTagLister(item, depth+1));
  }
}

recursiveTagLister();
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
  <h1>Header</h1>
  <p>Some text
     <a href="#">References</a>
  </p>
  <ul id="myList">
    <li>One</li>
    <li>Two</li>
    <li>Tree</li>
  </ul>
</body>
</html>

关于javascript - 如何遍历 DOM 并显示所有标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58594959/

相关文章:

javascript - 如何使用 React 创建 typescript 装饰器

javascript - Ajax 和异步等待

html - 如何在同一行中排列两个不同id的div?

html - 使标题拉伸(stretch)以适合容器并添加 > 到结尾

javascript - Ext JS 4 - 克隆节点并附加到 DOM 中的其他位置

javascript - Firepad 文本编辑器 - 文本区域未显示

javascript - 从一个 HTML 页面到另一个 HTML 页面的表单数据

javascript - 具有多个值的单选按钮逻辑

javascript - 如何将 JSON 数据添加到 HTML 表格

jquery - 加载的 div 尚未在 DOM 中