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

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)
http://www.xdnf.cn/news/12811.html

相关文章:

  • 开源项目实战学习之YOLO11:12.6 ultralytics-models-tiny_encoder.py
  • 【深度学习-Day 25】告别过拟合:深入解析 L1 与 L2 正则化(权重衰减)的原理与实战
  • 标准代码项目开发流程学习指南
  • CMS内容管理系统的设计与实现:架构设计
  • 红黑树完全指南:为何工程都用它?原理、实现、场景、误区全解析
  • 数学:”度量空间”了解一下?
  • JESD204B IP核接口实例,ADI的ADRV9009板卡,ZYNQ7045驱动实现2发2收。
  • LLMs 系列科普文(14)
  • 关于IE浏览器被绑定安装,还卸载不掉
  • 72常用控件_QGridLayout的使用
  • 热成像实例分割电力设备数据集(3类,838张)
  • Vscode下Go语言环境配置
  • 矢状位片不可用怎么办?前后位测量方法评估骨盆倾斜角!
  • 智能职业发展系统:AI驱动的职业规划平台技术解析
  • LLMs 系列科普文(2)
  • python:Tkinter 开发邮件客户端,能编写邮件,发送邮件带附件
  • F(x, y, z) = 0 隐函数微分 确定自变量
  • 【资源分享】手机玩转经典游戏!小鸡模拟器1.9.0:PSP/NDS/GBA完美运行!
  • SSE (Server-Sent Events) 技术简介
  • Java八股文——并发编程「并发安全篇」
  • C-Equilateral Triangle
  • Windows安装Miniconda
  • 鸿蒙学习笔记01
  • 手写 vue 源码 === runtime-core 实现
  • RISC-V 开发板 + Ubuntu 23.04 部署 open_vins 过程
  • Kaggle注册不成功,添加插件header Editor
  • FreeRTOS同步和互斥
  • CppCon 2015 学习:Large Scale C++ With Modules
  • Codeforces Educational 179(ABCDE)
  • MyBatis中foreach集合用法详解