当前位置: 首页 > news >正文

DOM(文档对象模型)深度解析

DOM(文档对象模型)深度解析

DOM 是 HTML/XML 文档的树形结构表示,提供了一套让 JavaScript 动态操作网页内容、结构和样式的接口。


一、DOM 核心概念

1. 节点(Node)类型
类型说明示例
ELEMENT_NODE1元素节点<div>, <p>
TEXT_NODE3文本节点元素内的文字
COMMENT_NODE8注释节点<!-- comment -->
DOCUMENT_NODE9文档根节点document
DOCUMENT_TYPE_NODE10文档类型声明节点<!DOCTYPE html>
2. DOM 树结构
<!DOCTYPE html>
<html><head><title>DOM示例</title></head><body><!-- 主内容 --><h1>标题</h1><p>段落</p></body>
</html>

对应的 DOM 树

DOCUMENT_NODE (document)├── DOCUMENT_TYPE_NODE (html)└── ELEMENT_NODE (html)├── ELEMENT_NODE (head)│    └── ELEMENT_NODE (title)│         └── TEXT_NODE ("DOM示例")└── ELEMENT_NODE (body)├── COMMENT_NODE ("主内容")├── ELEMENT_NODE (h1)│    └── TEXT_NODE ("标题")└── ELEMENT_NODE (p)└── TEXT_NODE ("段落")

二、DOM 操作 API

1. 节点查询
方法返回内容示例
document.getElementById()单个元素document.getElementById('app')
document.querySelector()首个匹配元素document.querySelector('.btn')
document.querySelectorAll()静态 NodeListdocument.querySelectorAll('li')
element.getElementsByTagName()动态 HTMLCollectiondiv.getElementsByTagName('p')
2. 节点遍历
属性说明示例
parentNode父节点node.parentNode
childNodes所有子节点node.childNodes
firstChild / lastChild首/末子节点node.firstChild
previousSibling / nextSibling前/后兄弟节点node.previousSibling
children仅元素子节点node.children
3. 节点修改
// 创建节点
const newDiv = document.createElement('div');
const newText = document.createTextNode('Hello');// 添加节点
parent.appendChild(newDiv)

相关文章:

  • Git 常见操作
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
  • DiMTAIC 2024 数字医学技术及应用创新大赛-甲状腺B超静态及动态影像算法赛-参赛项目
  • GitOps 核心思想 - 当 Git 成为唯一信源
  • 【PhysUnits】17.2 配套变量结构体 Var(variable.rs)
  • 第二十九章 数组
  • [嵌入式AI从0开始到入土]18_Ascend C算子开发环境(S5赛季)
  • 【redis】线程IO模型
  • 探索数学的迷人谜题:考兰兹猜想与MATLAB演示
  • MyBatis中foreach集合用法详解
  • STM32H562----------串口通信(UART)
  • 大模型如何选型?嵌入模型如何选型?
  • (LeetCode 每日一题)386. 字典序排数(递归、深度优先搜索dfs || 递推)
  • 2.2.1 ASPICE的需求收集
  • k8s4部署
  • ESP12E/F 参数对比
  • (LeetCode 动态规划(基础版))96. 不同的二叉搜索树 (递推 || 递归)
  • 设备驱动与文件系统:04 从生磁盘到文件
  • 软件测试—学习Day11
  • 经典算法:排序链表
  • 十堰网站设计0719web/在线培训系统app
  • 没人愿意干的68个暴利行业/郑州网站seo顾问
  • 有帮忙做儿童房设计的网站吗/今日网站收录查询
  • 淄博营销型网站建设公司/专注网站建设服务机构
  • 路由器搭建wordpress/上海专业seo
  • 最好的网站模板下载网站/seoul是什么品牌