# 2.1.4 DOM
### 2.1.4 DOM
DOM即**文档对象模型(Document Object Model)**。它是浏览器对HTML文本进行解析后得到的一个抽象数据结构。以上面的HTML文档为例,它对应的DOM树是:
![DOM.png](https://box.kancloud.cn/ae05d0bf24ea4a35e445e7908d249e68_420x300.png)
其中:
- 根节点document代表整个HTML文档。
- 文档类型声明对应着一个节点(类型为DocumentType)。
- 每个HTML标签,如html、head、meta等,都对应着一个节点——这类节点称为**元素(Element)**[1](#fn_1)。
- 标签的每个属性都对应着它的一个子节点。例如,meta标签的charset属性对应着meta元素的一个子节点。这类节点称为属性(Attribute)节点。
- 标签包含的文字对应着它的一个子节点。例如,p标签包含的文字“你好,HTML!”对应着p元素的一个子节点。这类节点称为文字(Text)节点。
- 标签直接包含的每个标签都对应着它的一个子节点。例如,html标签包含的head标签和body标签,分别对应着html元素的两个子节点head和body。
DOM很重要。我们将会在后面的[JavaScript](dom1.html)一节中看到,通过JavaScript这样的浏览器脚本可以访问并修改HTML文档对应的DOM树[2](#fn_2)——向其中动态地添加、删除节点,或者修改节点的属性——浏览器所呈现的网页就会随之变化。这就是浏览器动态UI编程的基本原理。
> 1. HTML元素与其对应的标签既有联系又有区别:[https://en.wikipedia.org/wiki/HTML\_element#Elements\_vs.\_tags](https://en.wikipedia.org/wiki/HTML_element#Elements_vs._tags)[↩](#reffn_1 "Jump back to footnote [1] in the text.")
> 2. 参考这里了解相关的JavaScript API:[http://www.w3schools.com/js/js\_htmldom\_navigation.asp](http://www.w3schools.com/js/js_htmldom_navigation.asp)[↩](#reffn_2 "Jump back to footnote [2] in the text.")
- 前言
- 1 Web概述
- 1.1 什么是Web
- 1.2 超文本和超链接
- 1.3 URL
- 1.4 DNS
- 1.5 HTTP
- 1.5.1 客户端请求
- 1.5.2 服务器应答
- 1.5.3 进一步了解HTTP
- 1.6 HTTPS
- 2 Web浏览器
- 2.1 HTML
- 2.1.1 文档类型声明
- 2.1.2 标签和属性
- 2.1.3 文档结构
- 2.1.4 DOM
- 2.1.5 进一步了解HTML
- 2.2 CSS
- 2.2.1 样式与样式表
- 2.2.2 样式表语法
- 2.2.3 级联样式表
- 2.2.4 进一步了解CSS
- 2.3 JavaScript
- 2.3.1 script标签
- 2.3.2 操纵DOM
- 2.3.3 jQuery
- 2.3.4 进一步了解JavaScript
- 2.4 Ajax
- 2.5 移动设备与响应式Web设计
- 3 Web服务器
- 3.1 方法与资源
- 3.2 状态代码
- 3.3 静态内容与动态内容
- 3.4 编程语言与技术
- 3.4.1 CGI
- 3.4.2 PHP
- 3.4.3 Java
- 3.4.4 Python
- 3.4.5 Ruby
- 3.4.6 Node.js
- 3.5 RESTful Web API
- 3.6 服务器架构
- 3.7 Web缓存
- 3.8 服务器推送
- 4 数据库
- 4.1 关系型数据库
- 4.2 NoSQL数据库
- 5 Web服务器的其他组件
- 5.1 Cron
- 5.2 消息队列
- 5.3 邮件服务器
- 6 开发工具与技术
- 6.1 Git
- 6.1.1 Git基础操作
- 6.1.2 Git基本原理
- 6.1.3 进一步了解Git
- 6.2 敏捷开发