DOM(文档对象模型),是针对HTML和XML文档的API。主要由元素节点,属性节点,文本节点组成。
DOM节点共有属性和方法
节点属性:
nodeType
, 元素节点1,属性节点2,文本节点3;nodeName
,元素节点保存元素的标签名与原始节点的tagName
相同,属性节点为属性名,文本节点为#text
;nodeValue
,元素节点为null,文本节点为文本内容,属性节点为属性值;textContent
,回当前节点和它的所有后代节点的文本内容,会把其中的标签解释为文本;childElementCount
,返回子元素的个数;
节点方法:
.contains()
, 接受一个节点作为参数,返回一个布尔值,表示参数节点是否为当前节点的后代节点;.isEqualNode()
, 返回一个布尔值,用于检查两个节点是否相等。所谓相等的节点,指的是两个节点的类型相同、属性相同、子节点相同;.isSameNode()
,返回一个布尔值,检查两个节点是否为同一个节点;.cloneNode()
,接收一个布尔值参数,表示是否进行深复制,深复制会复制其子节点,不会复制节点事件;
节点数结构
parentNode
,父节点,对于一个节点来说,它的父节点只可能是三种类型:element节点、document节点和documentFragment节点;childNodes
,所有子节点,基于DOM结构动态查询的结果,因此DOM结构的变化能够自动反映在Nodelist对象中;children
,所有子元素节点,childElementCount
子元素个数;firstChild
,第一个子节点,firstElementChild
第一个元素子节点,如果当前节点没有子节点,则返回null;lastChild
,最后一个子节点,lastElementChild
最后一个元素子节点;nextSibling
,下一个兄弟节点,nextElementSibling
下一个元素兄弟节点;previousSibing
,上一个兄弟节点,previousElementSibing
上一个元素兄弟节点;
选取节点
document.querySelector()
、document.querySelectorAll()
,接收一个CSS选择符,并获取匹配元素,返回的是一个静态集合。DOM内部的变化,并不会实时反映在该方法的返回结果之中。document.getElementsByName()
,返回有指定name的元素,常用情况是取得单选按钮,name相同的单选按钮只有选中那个会被获取;document.getElementById()
;document.getElementByClassName()
;document.getElementByTagName()
;document.activeElement()
,DOM中当前获得焦点的元素;document.documentElement,
取得html;document.body
,取得body;
操作节点
parentNode.appendChild(newNode)
,在父节点末尾添加一个节点,如果目标节点已经是文档的一部分了,那结果就是将该节点从原来的的位置移动到新位置;parentNode.insertBefore(newNode, targetNode)
,在父节点的某个子节点之前添加一个节点,目标位置参数null则跟appendChild()一样,如果所要插入的节点是当前DOM现有的节点,则该节点将从原有的位置移除,插入新的位置;parentNode.replaceChild(newNode, oldNode)
,替换一个子节点;parentNode.removeChild(node)
,移除一个子节点;document.createElement()
,创建元素节点;document.createTextNode()
,创建文本节点;document.creatDocumentFragment()
,利用DocumentFragment作为仓库先储存元素,最后再一起插入目标元素,避免浏览器多次渲染;
Document文档节点
Document,是整个文档树的顶层节点,也是window对象的一个属性。
document节点有不同的办法可以获取:
- 对于正常的网页,直接使用
document
或window.document
; - 对于iframe载入的网页,使用iframe节点的
contentDocument
属性; - 对Ajax操作返回的文档,使用XMLHttpRequest对象的
responseXML
属性; - 对于包含某个节点的文档,使用该节点的
ownerDocument
属性;
document节点属性:
document.doctype
,doctype标签(比如<!DOCTYPE html>
);document.documentElement
,返回HTML元素;document.defaultView
属性,在浏览器中返回document对象所在的window对象,否则返回null;document.documentURI
(所有文档),document.URL
(HTML文档)表示当前文档的网址;document.location
,属性返回location对象,提供了当前文档的URL信息;document.anchors
,集合返回了当前页面带有name
的锚链接数组,不建议使用;document.links
,取得所有带href特性的a元素;document.title
,获取文档标题,也可以修改文档标题;document.URL
,获取页面完整URL,只读;document.referrer
,保存着链接到当前页面的那个页面的URL,只读,如果当前文档不是通过超级链接访问的,则为 null;document.domain
,返回当前页面域名,可写,当页面存在在其它域的子域,设置domain可以使父子间通信;document.forms
,取得所有表单元素;document.images
,取得所有图像元素;document.embeds
,属性返回网页中所有嵌入对象,即embed标签;document.readyState
,有两个值loading和complete,用来实现一个指示文档已经加载完成的指示器浏览器开始解析HTML文档,document.readyState
属性等于loading。浏览器遇到HTML文档中的