DOM文档对象模型

DOM文档对象模型

一、什么是(DOM)文档对象模型

DOM 是 W3C(万维网联盟)的标准。

DOM 定义了访问 HTML 和 XML 文档的标准:

“W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。”

W3C DOM 标准被分为 3 个不同的部分:

  • 核心 DOM - 针对任何结构化文档的标准模型

  • XML DOM - 针对 XML 文档的标准模型

HTML DOM - 针对 HTML 文档的标准模型

 HTML DOM是关于如何获取、修改、添加或删除HTML元素的标准。

文档(Document):整个HTML文档

对象(Object):网页中的每一部分都转换为了一个对象

模型(Model):使用模型来表示对象之间的关系,方便我们获取对象。

 

二、DOM节点(Node):

-节点(Node)是构成网页的最基本的组成部分。

-HTML文档中的所有内容都是节点,比如:HTML标签、属性、文本、注释、 -虽皆为节点,但实际的具体类型是不同的,类型不同,属性和方法也不尽相同

比如:标签称为元素节点、属性称为属性节点、文本称为文本节点、文档称为文档节点。

(一)、HTML DOM节点树

HTML DOM 将 HTML 文档视作树结构。这种结构被称为节点树

HTML DOM Tree 实例

 

通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。

  • -在节点树中,顶端节点被称为根(root)

  • -每个节点都有父节点、除了根(它没有父节点)

  • -一个节点可拥有任意数量的子节点 

  • -同胞是拥有相同父节点的节点

举例:

<html> //没有父节点,所以它是根节点

  <head> //父节点是<html>,子节点是<title>

    <title> DOM </title> //子节点是文本节点“DOM”,可通过节点的innerHTML属性来访问文本节点的值

  </head>

  <body> //父节点是<html>

    <h1>DOM</h1> //与<p>为同胞节点

    <p>Hello world!</p> //文本节点“Hello world!”的父节点是<p>

  </body>

</html>

并且:

  • <head> 元素是 <html> 元素的首个子节点

  • <body> 元素是 <html> 元素的最后一个子节点

  • <h1> 元素是 <body> 元素的首个子节点

<p> 元素是 <body> 元素的最后一个子节点

 

  • 常用节点

文档节点(document)、元素节点(Element)、文本节点(text)、属性节点(Attr)。

1.文档节点:

代表的是整个HTML文档,网页中的所有节点都是它的子节点;document对象作为window对象的属性存在的,不用获取可直接使用。-通过该对象我们可以在整个文档访问内查找节点对象,并可以通过该对象创建各种节点对象。

2.元素节点:

-HTML中的标签都是元素节点,也是最常用的节点。

-浏览器会将页面中所有的标签都转换为一个元素节点,可通过document来获取。

比如:document.getElementById();//根据id获取元素

3.文本节点

⑴HTML标签以外的文本内容,任意非HTML的文本都是文本节点,包括可以字面解释的纯文本内容。

⑵一般作为元素节点的子节点存在

⑶获取文本节点时一般要先获取元素节点,再通过元素节点获取文本节点

例如:获取元素节点的第一个子节点,一般为文本节点。

元素节点.firstchild;

4.属性节点

-表示标签中的一个属性,但并非是元素节点的子节点,而是元素节点的一部分,可通过元素节点来获取指定的属性节点。

例如:

元素节点.getAttribute(“属性名”);

注意:我们一般不使用属性节点

三、DOM节点的操作

-创建节点  document.createElement(“标签名”)

-删除节点  父节点.removeChild(子节点)

-替换节点  父节点.replaceChild(新节点,旧节点)

-插入节点  父节点.appendChild(子节点)

父节点.insertBefore(新节点,旧节点)

(一)、获取

  1. 、获取元素(节点)

通过document对象调用

-getElementById()通过ID获取

-getElementByTagName()通过标签名获取

-getElementByName()通过name属性获取

-getElementByClassName通过标类名获取,该方法注意不支持IE8及以下版本

2、获取元素子节点

通过具体的元素节点调用

-getElementByTagName()方法,返回当前节点的指定标签名名后代节点

-childNodes 属性,表示当前节点的父节点

-firstChild 属性,表示当前节点的第一个子节点

-lastChild 属性,表示当前节点的最后一个子节点

3、获取父节点和兄弟节点

通过具体的节点调用

-parentNode 属性,表示当前节点的父节点

-previousSibling 属性,表示当前节点的前一个兄弟节点

-lastSbling 属性,表示当前节点的后一个兄弟节点

 

 

(二)、元素节点的属性

(1)、获取

元素对象.属性名

例:element.value  element.id   element.className

(2)、设置

元素对象.属性名=新的值

例:element.value=”hi” ;element.id=”id01”;element.className=”newclass”

(三)、节点的修改

(1)、修改内容:通过innerText属性读取或设置标签内部的文本可以用innerHTML属性读取或设置标签内部的文本。

二者异同:innerHTML会按照HTML的规则解析文本,而innerText只是当作普通的文本内容

(2)、修改样式

元素.style.属性

例:改变box的宽高

 

(四)、添加删除元素

⑴createElement创建一个元素节点

eg:createElement(“p”)创建一个段落

⑵createTextNode(content)创建一个文本节点

⑶appendChild添加子节点

⑷removeChild删除子节点

eg:select的动态创建


 

四、DOM属性

nodeName节点名称      nodeType节点类型    nodeValue节点的值

  1. nodeName属性

节点名称,是只读的。

⑴元素节点的nodeName与标签名相同

⑵属性节点的nodeName是属性的名称

⑶文本节点的nodeName只能是#text

⑷文档节点的nodeName只能是#document

2.nodeValue属性

节点的值

⑴元素节点的nodeValue是undefined或null

⑵文本节点的nodeValue是文本自身

⑶属性节点的nodeValue是属性的值

3.nodeType属性

也是只读的。

常用节点类型:

元素类型                  节点类型

元素 1

属性 2

文本 3

注释 8

文档 9

 

 

五、节点的方法

(一)、编程接口

可通过 JavaScript (以及其他编程语言)对 HTML DOM 进行访问。

所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属性。

方法是您能够执行的动作(比如添加或修改元素)。例如人的方法可能是吃、喝、睡等

属性是您能够获取或设置的值(比如节点的名称或内容)。人的属性包括姓名、身高、年龄等。

(二)、一些常用的方法和属性

方法:

方法

描述

getElementById()

返回带有指定 ID 的元素。

getElementsByTagName()

返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。

getElementsByClassName()

返回包含带有指定类名的所有元素的节点列表。

appendChild()

把新的子节点添加到指定节点。

removeChild()

删除子节点。

replaceChild()

替换子节点。

insertBefore()

在指定的子节点前面插入新的子节点。

createAttribute()

创建属性节点。

createElement()

创建元素节点。

createTextNode()

创建文本节点。

getAttribute()

返回指定的属性值。

setAttribute()

把指定属性设置或修改为指定的值。

属性:

  • innerHTML - 节点(元素)的文本值

  • parentNode - 节点(元素)的父节点

  • childNodes - 节点(元素)的子节点

  • attributes - 节点(元素)的属性节点 

例:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值