小王的js学习笔记(三)——DOM文档对象模型

it2026-08-09  2

DOM文档对象模型

DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构。节点分为几种不同的类型,每种类型分别表示文档中不同的信息或标记。每个节点拥有各自的特点,数据和方法,另外也有与其他节点存在某种关系。节点之间的关系构成了层次,所有页面标记则表现为一个以特定节点为根节点的树形结构。通过HTML DOM,JavaScript能够访问和改变HTML文档的所有元素,当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

Node类型

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(),处理文档树中的文本节点,会删除空白节点,找到相邻的两个文本节点,并将他们合并为一个文本节点。

Document类型

文档子节点,可以继承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属性值包含所有指定的标识符时才匹配。

Element类型

所有的HTML元素都由HTMLElement类型表示,或者其子类型表示。每个HTML元素都应具有如下一些属性以及html元素特有的属性。 属性id元素在文档中的唯一标识符title有关元素的附加说明信息className与元素class特性对应srcimg元素具有的属性altimg元素具有的属性lang元素内容的语言代码dir语言方向,ltr,rtl 左到右,右到左 获得自定义属性,getAttribute() 参数为实际元素的属性名。设置属性,例如:dom.className = “one”。移除属性:removeAttribute() 移除指定的属性。attributes属性:其中包含了一个NamedNodeMap,与NodeList类似。 getNamedItem(name),返回nodeName属性,等于name的节点,再访问nodeValue; removeNamedItem(name),从列表中删除nodeName属性等于name的值; setNamedItem(attrNode),向列表中添加一个节点; item(index),返回位于数字index位置处的节点。创建元素:document.createElement() 参数为要创建元素的标签名。Element对象树 firstElementChild第一个孩子元素节点lastElementChild最后一个孩子元素节点nextElementSibling下一个兄弟元素节点previousElementSibling上一个兄弟元素节点childElementCount子元素的数量,返回值和children.length值相等 元素内容innerHTML返回元素内容,包括html标签innerText元素内部的文本,去除回车和换行textContent元素内部的文本,不去除空格和回车

Text类型、Comment类型

Text类型length文本长度appendData(text)追加文本deleteData(beginIndex,count)删除文本insertData(beginIndex,text)插入文本replaceData(beginIndex,count,text)替换文本splitText(beginIndex)从beginIndex位置将当前文本节点分成两个文本节点document.createTextNode(text)创建文本节点,参数为要插入节点中的文本substringData(beginIndex,count)从beginIndex开始提取count个子字符串Comment类型(注释类型)<!–a comment–>
最新回复(0)