DOM:Document Object Model
DOM是JavaScript操作网页的接口,可以将网页转换成一个JavaScript对象,让脚本来对里面的内容进行操作。
DOM的最小组成单位是节点(node),节点的类型有七种:Document(整个文档树的顶层节点),DocumentType(doctype标签),Element(网页的各种HTML标签),Attribute(网页元素的属性),Text(标签之间或标签包含的文本),Comment(注释),DocumentFragment(文档的片段),这七种节点都继承自原生的节点对象Node,即他们的__proto__属性等于Node.prototype。
节点树:由这些节点构成的层状结构。
Node接口的属性:
Node.nodeType可以返回一个整数值,表示节点的类型
七种节点对应的nodeType值:
Document:9;DocumentType:10;Element:1;Attribute:2;Text:3;Comment:8;DocumentFragment:11;
Node.nodeName可以返回一个节点的名称,不同类次节点对应的节点名称:
Document:#document;DocumentType:文档的类型;Element:大写的标签名;Attribute:属性的名称;Text:#text;Comment:#comment;DocumentFragment:#document-fragment;
Node.textContent返回当前节点和它的所有后代节点的文本内容,如果不设置新文本内容,就代表获取当前的文本内容,如果设置则代表替换原来的内容。
和innerText的区别:textContent会获取所有元素的内容,包括script和style里的内容,而innerText不会;textContent可以获取到被隐藏元素的内容,而innerText受样式影响不会获取到;
Node.nextSibling返回当前节点的下一个兄弟节点,如果不存在返回null,使用时需注意获取到的下一个节点可能是文本节点,需要加判断。
Node.previousSibling返回当前节点的上一个兄弟节点,如果不存在返回null,使用时需注意获取到的上一个节点可能是文本节点,需要加判断。
Node.cloneNode用于克隆一个节点,接受一个参数,true或false,默认为true,代表deep,深克隆,表示该节点的所有后代节点也将被克隆,如果是false,则代表后代不会被克隆。
Node.isEqualNode返回一个布尔值,用于检查两个节点是否相等,即节点类型相同,属性相同,子节点相同。
Node.isSameNode返回一个布尔值,表示两个节点是否是同一个节点。