通过DOM,JavaScript能够获取、修改、添加、删除HTML文档的元素、属性、CSS样式,还能够创建新的HTML事件并对页面中所有已有的HTML事件作出反应,从而创建动态网页,实现互动操作。
其中,document节点表示每个文档的根节点。根节点的唯一子节点是html元素,我们称之为文档元素(documentElement)。文档元素是文档最外层的元素,所有其他元素都存在于这个元素之内,每个文档只能有一个文档元素。
在HTML页面中,文档元素始终是html元素。在XML文档中,则没有这样预定义的元素,任何元素都可能成为文档元素。
HTML中的每段标记都可以表示为这个树形结构中的一个节点。元素节点表示HTML元素,属性节点表示属性,文档类型节点表示文档类型,注释节点表示注释。
DOM 中总共有 12 种节点类型,这些类型都继承一种基本类型。
| 节点类型(节点常量) | 值 |
|---|---|
| 元素节点 Node.ELEMENT_NODE |
1 |
| 属性节点 Node.ATTRIBUTE_NODE |
2 |
| 文本节点 Node.TEXT_NODE |
3 |
| CDATA节点 Node.CDATA_SECTION_NODE |
4 |
| 实体引用名称节点 Node.ENTITY_REFERENCE_NODE |
5 |
| 实体名称节点 Node.ENTITY_NODE |
6 |
| 处理指令节点 Node.PROCESSING_INSTRUCTION_NODE |
7 |
| 注释节点 Node.COMMENT_NODE |
8 |
| 文档节点 Node.DOCUMENT_NODE |
9 |
| 文档类型节点 Node.DOCUMENT_TYPE_NODE |
10 |
| 文档片段节点 Node.DOCUMENT_FRAGMENT_NODE |
11 |
| DTD声明节点 Node.NOTATION_NODE |
12 |
| 节点类型 | 返回值 |
|---|---|
| 元素节点 | 返回元素的名称 |
| 属性节点 | 返回属性的名称 |
| 文本节点 | 返回“#text”的字符串 |
| 节点类型 | 返回值 |
|---|---|
| 元素节点 | 1 |
| 属性节点 | 2 |
| 文本节点 | 3 |
| 注释节点 | 8 |
| 文档节点 | 9 |
| 节点类型 | 返回值 |
|---|---|
| 注释节点 | 返回注释的文本值 |
| 属性节点 | 返回属性的值 |
| 文本节点 | 返回文本的值 |
| 属性名 | 作用 |
|---|---|
| length | length属性将返回一个元素所有可能的节点书数目 |
| innerHTML | 设置或获取位于对象起始和结束标签内的HTML |
| attributes | attributes属性返回指定节点的属性集合,即NamedNodeMap |
| parentNode | parentNode属性以Node对象的形式返回指定节点的父节点 |
| childNodes | childNodes属性返回节点的子节点集合,以NodeList对象 |
| firstChild | firstChild属性返回指定节点的首个子节点,以Node对象 |
| lastChild | lastChild属性返回被选节点的最后一个子节点。 如果选定的节点没有子节点,则该属性返回 NULL |
| previousSibling | previousSibling属性返回选定节点的上一个同级节点。 如果不存在这样的节点,则该属性返回null |
| nextSibling | nextSibling属性返回指定节点之后紧跟的节点,在相同的树层级中。 被返回的节点以Node对象返回 |
| 方法名 | 描述 |
|---|---|
| appendChild() | 该方法接受一个节点对象作为参数,将其作为最后一个子节点,插入当前节点。返回值就是插入文档的子节点。 |
| insertBefore() | 该方法用于将某个节点插入父节点内部的指定位置。 |
| removeChild() | 该方法接受一个子节点作为参数,用于从当前节点移除该子节点。返回值是移除的子节点。 |
| replaceChild() | 该方法用于将一个新的节点,替换当前节点的某一个子节点。 |
| cloneNode() | 该方法返回调用该方法的节点的一个副本。 |
| 属性 | 描述 |
|---|---|
| documentElement | 始终指向HTML页面中的<html>元素 |
| body | 直接指向<body>元素 |
| doctype | 访问<!DOCTYPE>, 浏览器支持不一致,很少使用 |
| title | 获取文档的标题 |
| URL | 取得完整的URL |
| domain | 取得域名,并且可以进行设置,在跨域访问中经常会用到 |
| referrer | 取得链接到当前页面的那个页面的URL,即来源页面的URL |
| images | 获取所有的img对象,返回HTMLCollection类数组对象 |
| forms | 获取所有的form对象,返回HTMLCollection类数组对象 |
| links | 获取文档中所有带href属性的a元素 |
| 方法 | 描述 |
| getElementById() | 通过元素id查找元素 |
| getElementsByTagName() | 通过标签名查找元素 |
| getElementsByClassName() | 通过类名查找元素 |
| querySelector() | 返回文档中匹配指定的CSS选择器的第一元素 |
| querySelectorAll() | 返回文档中匹配的CSS选择器的所有元素节点列表 |
| createElement() | 创建一个新的HTML元素 |
| write() | 向文档写入文本、HTML表达式、JavaScript代码 |
| createTextNode(text) | 创建文本节点,参数为要插入节点中的文本 |
| 属性 | 描述 |
|---|---|
| attributes | 返回一个与该元素相关的所有属性的集合 |
| classList | 返回该元素包含的class属性的集合 |
| className | 获取或设置指定元素的class属性的值 |
| clientHeight | 获取元素内部的高度,包含内边距,但不包括水平滚动条、边框和外边距 |
| clientTop | 返回该元素距离它上边界的高度 |
| clientLeft | 返回该元素距离它左边界的宽度 |
| clientWidth | 返回该元素它内部的宽度,包括内边距,但不包括垂直滚动条、边框和外边距 |
| innerHTML | 设置或获取HTML语法表示的元素的后代 |
| attribute | 修改属性的值 |
| style.property | 改变HTML元素的样式 |
| 方法 | 描述 |
|---|---|
| getAttribute() | 返回元素节点的指定属性值 |
| setAttribute(att,val) | 把指定属性设置或更改为指定值 |
| 属性 | 描述 |
|---|---|
| length | 文本长度 |
| appendData(text) | 追加文本 |
| deleteData(Index,count) | 删除文本 |
| insertData(Index,text) | 插入文本 |
| replaceData(Index,count,text) | 替换文本 |
| splitText(Index) | 从Index位置将当前文本节点分成两个文本节点 |
| substringData(Index,count) | 从Index开始提取count个子字符串 |