登录
首页 >  文章 >  前端

JavaScript树结构与DOM遍历全解析

时间:2026-01-19 10:53:49 352浏览 收藏

对于一个文章开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《JavaScript树结构及DOM遍历方法详解》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

JavaScript中的“树结构”指DOM这种分层数据组织方式,以document为根节点,HTML元素按父子、兄弟关系嵌套构成树;常用遍历法包括childNodes/children、parentNode、next/previousElementSibling、querySelector及递归DFS与队列BFS。

什么是javascript树结构_如何遍历DOM树?

JavaScript 中的“树结构”指的是一种分层的数据组织方式,DOM(文档对象模型)就是典型的树结构——网页的 HTML 元素以父子、兄弟关系嵌套连接,形成一棵从 document 根节点出发的树。

DOM 树长什么样?

比如这段 HTML:


  

标题


  

一段文字


  

        
  • 列表项 1

  •     
  • 列表项 2

  •   

它对应的 DOM 树根是 document#app 是它的子节点(通常为 document.bodydocument.documentElement 的直接子元素),h1pul#app 的子节点,li 又是 ul 的子节点……逐层向下,构成清晰的父子层级。

常用遍历 DOM 树的方法

遍历不等于“操作”,而是按某种顺序访问每个节点。DOM 提供了多种原生方式:

  • childNodes / children:获取某节点的全部子节点(含文本、注释等)或仅元素子节点(children 更常用)
  • parentNode:向上找父节点,直到 documentnull
  • nextSibling / previousSibling:找同级的下一个/上一个节点(注意可能拿到空白文本节点)
    → 更安全用 nextElementSiblingpreviousElementSibling
  • querySelector / querySelectorAll:用 CSS 选择器“跳着查”,适合目标明确的查找,不算严格意义上的遍历,但很实用

递归遍历:深度优先(DFS)

这是最贴近“树遍历本质”的写法,从根开始,先处理当前节点,再递归处理所有子元素:

function traverse(node) {
  if (node.nodeType === Node.ELEMENT_NODE) {
    console.log(node.tagName); // 只处理元素节点
  }
  for (let child of node.children) {
    traverse(child);
  }
}
traverse(document.body);

它自然地按 HTML 结构顺序访问:BODY → DIV → H1 → P → UL → LI → LI

循环遍历:广度优先(BFS)

用队列实现,一层一层往下扫,适合需要“先看到所有一级子元素”的场景:

function bfs(root) {
  const queue = [root];
  while (queue.length > 0) {
    const node = queue.shift();
    if (node.nodeType === Node.ELEMENT_NODE) {
      console.log(node.tagName);
    }
    for (let child of node.children) {
      queue.push(child);
    }
  }
}
bfs(document.body);

输出顺序类似:BODY → DIV → H1 → P → UL → LI → LI(取决于 div 下是否还有其他同级元素)。

基本上就这些。DOM 树本身不复杂,但容易忽略节点类型(如文本节点)、空白符影响和 childrenchildNodes 的区别。用对方法,遍历就变得清晰可控。

理论要掌握,实操不能落!以上关于《JavaScript树结构与DOM遍历全解析》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>