DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构。节点分为几种不同的类型,每种类型分别表示文档中不同的信息或标记。每个节点拥有各自的特点,数据和方法,另外也有与其他节点存在某种关系。节点之间的关系构成了层次,所有页面标记则表现为一个以特定节点为根节点的树形结构。通过HTML DOM,JavaScript能够访问和改变HTML文档的所有元素,当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
JavaScript中所有的节点类型都继承自Node类型,所有节点类型都共享着相同的基本属性和方法。
节点关系 节点自身属性 nodeType表示节点类型Document–>9;Element -->1;TextNode -->3;Comment–> 8。document是Document构造函数的实例,document.body是Element 构造函数的实例 nodeName该属性取决于节点类型,如果是元素类型,值为元素的标签名,一般用于Element原型链 nodeValue该属性取决于节点类型,如果是元素类型,值有null,一般用于Text原型链。 文档树层级关系 childNodes 保存一个NodeList对象。包含在chlidNodes列表中的所有节点都具有相同的父节点,每个节点之间都是兄弟节点 parentNode 指向文档树中的父节点。 previousSibling 兄弟节点中的前一个节点 nextSibling 兄弟节点中的下一个节点 firstChild childNodes列表中的第一个节点 lastChild childNodes列表中的最后一个节点 ownerDocument 指向表示整个文档的文档节点。任何节点都属于它所在的文档,任何节点都不能 同时存在于两个或更多个文档中。 方法 hasChildNodes(),在包含一个或多个节点的情况下的返回true appendChild(),向childNodes列表末尾添加一个节点。返回新增的节点,追加到最后。父节点调用。 insertBefore() //第一个参数:要插入的节点;第二个参数:作为参照的节点;被插入的节点会变成参照节点的前一个同胞节点,同时被方法返回。如果第二个参数为null 将会将该节点追加在NodeList后面。父节点调用。 replaceChild() //第一个参数:要插入的节点;第二个参数:要替换的节点;要替换的节点将由这个方法返回并从文档树中被移除,同时由要插入的节点占据其位置。父节点调用。 removeChild() //一个参数,即要移除的节点。 移除的节点将作为方法的返回值。父节点调用。 cloneNode(),拷贝节点。有一个参数为true时,表示深拷贝,为false时表示浅拷贝。 normalize(),处理文档树中的文本节点,会删除空白节点,找到相邻的两个文本节点,并将他们合并为一个文本节点。文档子节点,可以继承Node中所有的属性和方法
属性documentElement始终指向HTML页面中的<html>元素。body直接指向<body>元素doctype访问<!DOCTYPE>, 浏览器支持不一致,很少使用title获取文档的标题URL取得完整的URLdomain取得域名,并且可以进行设置,在跨域访问中经常会用到。referrer取得链接到当前页面的那个页面的URL,即来源页面的URL。images获取所有的img对象,返回HTMLCollection类数组对象forms获取所有的form对象,返回HTMLCollection类数组对象links获取文档中所有带href属性的<a>元素查找元素 getElementById(),参数为取得元素的id,如果找到则返回该元素,否则返回null,如果有多个相同的id,只会返回第一次出现的元素,如果有表单元素的name值等于id,也会被匹配。 getElementsByTagName(),参数为要取得元素的标签名,返回包含多个元素的HTMLCollection,可以通过[index/name]、item()、namedItem(name)访问。 getElementsByName(),参数为元素的name,返回符合条件的NodeList getElementsByClassName(),参数为一个字符串,可以由多个空格隔开的标识符组成。当元素的class属性值包含所有指定的标识符时才匹配。
