文档对象模型 DOM
1 DOM概述
1.1 什么是DOM
- 文档对象模型 Document Object Model
- 文档对象模型 是表示和操作 HTML和XML文档内容的基础API
- 文档对象模型,是W3C组织推荐的处理可扩展标志语言的标准编程接口
1.2 DOM分类
- 核心 DOM - 针对任何结构化文档的标准模型
- XML DOM - 针对 XML 文档的标准模型
- HTML DOM - 针对 HTML 文档的标准模型
1.3 DOM分级
1级dom
1
1级DOM在1998年10月份成为W3C的提议,由DOM核心与DOM HTML两个模块组成。DOM核心能映射以XML为基础的文档结构,允许获取和操作文档的任意部分。DOM HTML通过添加HTML专用的对象与函数对DOM核心进行了扩展。
2级dom
1
通过对原有DOM的扩展,2级DOM通过对象接口增加了对鼠标和用户界面事件、范围、遍历(重复执行DOM文档)和层叠样式表(CSS)的支持。
3级dom
1
3级DOM通过引入统一方式载入和保存文档和文档验证方法对DOM进行进一步扩展,DOM3包含一个名为“DOM载入与保存”的新模块,DOM核心扩展后可支持XML1.0的所有内容,包括XML Infoset、 XPath、和XML Base。
1.4 DOM树
2 节点
2.1 什么是节点
文档中的每一个部分都是节点,包括document 元素 属性 文本…
2.2 节点的分类
- Document
Element 元素 Attr 属性 - Text 文本
- Comment 注释
2.3 节点属性
nodeName 节点名字
1
2
3
4
5document : #document
element : 标签名
attr : 属性名
text : #text
comment : #commentnodeValue 节点值
1
2
3
4
5document : null
element : null
attr : 属性值
text : 文本内容
comment : 注释内容nodeType 节点类型
1
2
3
4
5document : 9
element : 1
attr : 2
text : 3
coment : 8
3 获取元素对象
通过ID获取元素
1
2document.getElementById()
id属性可自动成为被脚本访问的全局变量通过name值获取元素
1
2
3
4
5
6
7
8
9
10document.getElementsByName()
IE9+和标准浏览器认为 所有的元素都有name
IE9- 认为只有个别元素有name
表单和表单控件
img iframe embed object ....
docuemnt会为某些元素创建以元素name为名字的属性
<form>
<img>
.......通过标签名获取元素
1
2
3
4
5
6document.getElementsByTagName()
element.getElementsByTagName()
document.images 所有img的引用
document.forms 所有表单的引用
document.links 所有超链接的引用
docuent.anchors 所有锚点的引用通过类名选取元素(IE9+)
1
2document.getElementsByClassName()
element.getElementsByClassName()通过CSS选择器选取元素
1
2
3
4document.querySelectorAll()
document.querySelector()
element.querySelectorAll()
element.querySelector()获取所有的元素
1
document.all
4 文档结构和遍历文档
4.1 节点关系
- 父节点 父元素
- 子节点 子元素
- 同辈节点 同辈元素
- 祖先节点 祖先元素
- 后代节点 后代元素
4.2 作为节点树的文档
- parentNode 父节点
- childNodes 所有子节点的集合
- firstChild 第一个子节点
- lastChild 最后一个子节点
- nextSibling 下一个兄弟节点
- previousSibling 上一个兄弟节点
4.3 作为元素树的文档
- parentElement 父元素 大部分情况下 parentElement 等同于 parentNode
- children 所有子元素的集合
- firstElementChild IE9+ 第一个子元素
- lastElementChild IE9+ 最后一个子元素
- nextElementSibling IE9+ 下一个兄弟元素
- previousElementSibling IE9+ 上一个兄弟元素
- childElementCount IE9+ 子元素的数量
- ownerDocument 返回元素所属的文档对象
5 属性
5.1 HTML标签的属性和元素对象的属性
HTMLElement对象映射了元素的HTML属性
5.2 获取和设置非标准的HTML属性
- getAttribute(attrname) 获取自定义或内置属性的值
- setAttribute(attrnane, value) 设置自定义或内置属性
- hasAttribute(attrname) 判断是否存在该属性
- removeAttribute() 移出自定义或内置的属性
5.3 作为Attr节点的
- arrtibutes 属性
- setAttributeNode()
- getAttributeNode()
- document.createAttribute() 创建属性节点
6 元素的内容
6.1 作为HTML的元素内容
- innerHTML
- outerHTML
6.2 作为纯文本的元素内容
- textContent IE9+
- innerText 会忽略多余空白
6.3 作为Text节点的元素内容
文本节点的方法
1 | appendData() 向文本节点追加内容 |
创建文本节点
1 | document.createTextNode() |
7 创建、插入、删除 节点
7.1 创建节点
1 | document.createElement() |
7.2 插入节点
1 | appendChild() 在元素的最后追加一个子元素 |
7.3 删除节点
1 | removeChild() |
7.4 替换节点
1 | replaceChild(new_node, old_node) |
7.5 克隆节点
1 | cloneNode() |
7.6 DocumentFragment
1 | document.createDocumentFragment()可以创建该对象 |
8 元素的尺寸、位置、滚动
8.1 元素坐标
1 | offsetLeft 距离左边的距离, 相对规则同 css 的定位 |
8.2 判定某个元素在某点
1 | document.elementFromPoint() |
8.3 查询元素的几何尺寸
1 | getBoundingClientRect() |
8.4 滚动
1 | scrollLeft |
9 Document对象
每个载入浏览器的 HTML 文档都会成为 Document 对象。 Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。
9.1 属性
1 | URL 获取当前页面的url 只读 |
9.2 方法
1 | write() |
10 HTML表单中的相关对象
10.1 选取表单和表单元素
10.2 表单和表单元素的属性
10.3 from对象
属性
1 | elements 所有表单控件组成的集合 |
方法
1 | submit() 让表单提交 |
10.3 按钮(button submit reset)对象
方法
1 | focus() 获得焦点 |
10.4 单选复选
方法
1 | focus() 获得焦点 |
10.5 文本(input textarea)
方法
1 | focus() 获取焦点 |
10.6 select对象
属性
1 | options |
方法
1 | add() 添加选项 |
11 Table中相关对象
11.1 table对象
属性
1 | cells 返回包含表格中所有单元格的一个数组。 |
方法
1 | createCaption() 为表格创建一个 caption 元素。 |
11.2 tr对象
属性
1 | cells 返回包含行中所有单元格的一个数组。 |
方法
1 | deleteCell() 删除行中的指定的单元格。 |
11.3 td对象、th对象
属性
1 | cellIndex 返回单元格在某行的单元格集合中的位置。 |