DOM模型

1.DOM简介

DOM是W3C(万维网联盟)的标准。DOM定义了访问HTML和XML文档的标准。W3C文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。

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

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

HTML DOM是HTML的标准对象模型、HTML的标准编程接口和W3C标准。HTML DOM定义了所有HTML元素的对象和属性,以及访问它们的方法。换言之,HTML DOM是关于如何获取、修改、添加或删除HTML元素的标准

2.DOM节点

在HTML DOM中,所有事物都是节点DOM是被视为节点树的HTML

根据W3C的HTML DOM标准,HTML文档中的所有内容都是节点:

整个文档是一个文档节点
每个HTML元素是元素节点
HTML元素内的文本是文本节点
每个HTML属性是属性节点
注释是注释节点

2.1 HTML DOM节点树

节点树中的节点彼此拥有层级关系。父(parent)、子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

在节点树中,顶端节点被称为根(root);每个节点都有父节点,除了根节点;一个节点可拥有任意数量的子节点、同胞是拥有相同父节点的节点


    
        HTML DOM
    

    

DOM Lesson1

Hello HTML DOM!

在上面的HTML中,节点没有父节点,它是根节点,并且它拥有两个子节点和;和的父节点是节点;文本节点“Hello HTML Dom!"的父节点是

节点;元素是元素的首个子节点,并且拥有一个子节点;<title>子节点也拥有一个子节点:文本节点"DOM Lesson1”;<body>元素是<html>元素的最后一个节点,<h1>和<p>节点是同胞节点,同时也是<body>的子节点;<h1>是<body>元素的首个子节点,而<p>是<body>元素的最后一个节点。</p> <p style="text-indent:33px;">DOM处理中的常见错误是希望元素节点包含文本。在 "<title>HTML DOM"中,元素节点,包含值为“HTML DOM”的文本节点,可以通过节点的<strong>innerHTML属性</strong>来访问文本节点的值。</p> <h2>3.DOM方法</h2> <p style="text-indent:33px;">DOM方法是我们可以在节点(HTML元素)上执行的动作。可通过JavaScript对HTML DOM进行访问。<span style="color:#3399ea;">所有HTML元素被定义为对象</span>,而<span style="color:#3399ea;">编程接口则是对象方法和对象属性</span>。<span style="color:#e579b6;">方法是能够执行的动作(比如添加或修改元素)。属性是能够获取或设置的值(比如节点的名称或内容)。</span></p> <h3>3.1 HTML DOM对象的属性和方法</h3> <pre><code>HTML DOM方法: getElementById(id)--获取带有指定id的节点(元素) appendChild(node)--插入新的子节点(元素) removeChild(node)--删除子节点(元素) HTML DOM属性: innerHTML--节点(元素)的文本值 parentNode--节点(元素)的父节点 childNodes--节点(元素)的子节点 attributes--节点(元素)的属性节点</code></pre> <pre><code class="language-html"><!DOCTYPE html> <html> <head> <title>DOM模型

Hello World!

演示getElementById()

DOM模型_第1张图片

3.2 HTML DOM的常用方法

HTML DOM的常用方法
方法 描述
getElementById() 返回带有指定ID的元素
getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)
getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表
appendChild() 把新的子节点添加到执行节点
removeChild() 删除子节点
replaceChild() 替换子节点
insertChild() 在指定的子节点前面插入新的子节点
createAttribute() 创建属性节点
createElement() 创建元素节点
createTextNode() 创建文本节点
getAttribute() 返回指定的属性值
setAttribute() 把指定属性设置或修改为指定的值

4.DOM属性

属性是节点(HTML元素)的值,能够获取或设置

4.1 innerHTML属性

获取元素内容的简单方法就是使用innerHTML属性。innerHTML属性可用于获取或替换HTML元素,包括和

4.2 nodeName属性

nodeName属性规定节点的名称。nodeName属性是只读的。规则:

元素节点的nodeName与标签名相同。
属性节点的nodeName与属性名相同。
文本节点的nodeName始终是#text。
文档节点的nodeName始终是#document。

注意:nodeName始终包含HTML元素的大写字母标签名。



	
			DOM模型
				
	
	
		

Hello World!

DOM模型_第2张图片

4.3 nodeValue属性

nodeValue属性规定节点的值。规则:

元素节点的nodeValue是undefined或null
文本节点的nodeValue是文本本身
属性节点的nodeValue是属性值


	
			DOM模型
				
	
	
		

Hello World!

DOM模型_第3张图片

getAttributeNode("id")方法获取id的属性节点,因此输出的是id的属性值。 

4.4 nodeType属性

nodeType属性返回节点的类型。nodeType是只读的。比较重要的节点类型有:

节点类型
元素类型 NodeType
元素 ·1
属性 2
文本 3
注释 8
文档 9

 
    
        

Hello World!

5.DOM访问

访问DOM即查找HTML元素,访问HTML元素等同于访问节点。

DOM提供如下三种方式来访问HTML元素:

getElementById()方法
getElementsByTagName()方法
getElementsByClassName()方法

语法:
getElementById("id")
getElementsByTagName("tagname")
getElementsByClassName("className")

 
    
        

Hello World!

使用getElementById()


访问DOM

第一次使用getElementsByTagName()


p1

p2

p3

第一次使用getElementsByClassName

6.DOM修改

修改HTML=改变元素、属性、样式和事件。修改HTML DOM包括修改HTML内容、改变CSS样式、改变HTML属性、创建新的HTML元素、删除已有的HTML元素和改变事件(处理程序)。

6.1 改变HTML内容

使用innerHTML属性来改变元素内容。具体做法就是在

浏览器中直接显示为"New text!"

6.2 改变HTML样式

通过HTML DOM,能够访问HTML元素的样式对象。


	
	DEMO1
	
	
	

Hello world!

Hello world!

DOM模型_第4张图片

6.3 改变HTML属性

通过HTML DOM,能够修改HTML元素的属性。具体可以通过setAttribute()实现:



	
	DEMO1
	
	
		点我
	
	

6.4 创建HTML元素

appendChild(节点名)--将元素作为父元素的最后一个子元素进行添加。

首先必须创建该元素(元素节点)(createElement(元素名)、createTextNode(文本)),然后把它追加到已有的元素上。如:



	
	DEMO1
	
	
		

This is a paragraph.

This is another paragraph.

DOM模型_第5张图片

 insertBefore()--将元素作为父元素的第一个子元素进行添加



	
	DEMO1
	
	
		

This is a paragraph.

This is another paragraph.

DOM模型_第6张图片

 

6.5 删除HTML元素

找到需要删除的子元素,然后使用parentNode属性来查找其父元素删除(常用):

var child=document.getElementById("p1");
child.parentNode.removeChild(child);

removeChild(子节点)--由父节点调用,删除子节点

如果需要删除HTML元素,必须清楚该元素的父元素。



	
	DEMO1
	
	
		

This is a paragraph.

This is another paragraph.

 remove()--通过找到该元素节点,由document.访问节点方法.remove()



	
	DEMO1
	
	
		

This is a paragraph.

This is another paragraph.

6.6 替换HTML元素

使用replaceChild(新子节点,旧子节点)



	
	DEMO1
	
	
		

This is a paragraph.

This is another paragraph.

DOM模型_第7张图片

7.DOM事件

当事件发生时,可以执行JavaScript,比如当用户点击一个HTML元素时,把JavaScript代码添加到HTML事件属性中。

HTML事件的例子:

当用户点击鼠标时
当网页已加载时
当图片已加载时
当鼠标移动到元素上时
当输入字段被改变时
当HTML表单被提交时
当用户触发按键时

7.1 HTML事件属性

如需向HTML元素分配事件,可以使用事件属性。如:向button元素分配一个onclick事件:


	
	
	
		

点击按钮来执行 displayDate() 函数。

7.2 使用HTML DOM来分配事件


	
	
	
		

点击按钮来执行 displayDate() 函数。

和上面例子的效果一模一样。

7.3 onload和onunload事件 

当用户进入或离开页面时,会触发onload和onunload事件onload事件可用于检查访客的浏览器类型和版本,以便这些信息来加载不同版本的网页。onload和onunload事件可以用于处理cookies


 
	 
	 
	

弹出的提示框会告诉你浏览器是否已启用cookie。

7.4 onchange事件

onchange事件常用于输入字段的验证


 
	
		
	 
	
	请输入你的英文名: 

当你离开输⼊框时,被触发的函数会把你输入的文本转换为大写字母。

7.5 onmouseover和onmouseout事件

 onmouseover和onmouseout事件可用于在鼠标指针移动到或离开元素时触发函数


 
	
	 
	
	
Mouse Over Me

7.6 onmousedown、onmouseup以及onclick事件

onmousedown、onmouseup和onclick事件是鼠标点击的全部过程。首先当某个鼠标按钮被点击时,触发onmousedown事件,然后当鼠标按钮被松开时,会触发onmouseup事件,最后当鼠标点击完成时,触发onclick事件。


 
	 
		
点击这里

8.DOM导航

通过HTML DOM,能够使用节点关系在节点树中导航。

8.1 HTML DOM节点列表

getElementsByTagName()返回节点列表。节点列表是一个数组

var x=document.getElementsByTagName("p");//选取文档中的所有

节点 y=x[1];//通过下表号1访问第二个

节点

注意:下标号从0开始。

8.2 HTML DOM节点列表长度

length属性定义节点列表中节点的数量。可以使用length属性来循环节点列表。

 
	 
		

Hello World!

DOM 很有⽤!

本例演示 length 属性。

DOM模型_第8张图片

8.3 导航节点关系

可以使用三个节点属性:parentNode、firstChild以及lastChild,在文档结构中进行导航

 
	 
		

Hello World!

DOM 很有⽤!

本例演示节点关系

首个

元素是元素的首个子元素(firstChild),

元素是元素的最后一个子元素(lastChild),元素是首个

元素和

元素的父节点(parentNode).

firstChild属性可用于访问元素的文本:


    
        

Hello World!

8.4 DOM根节点

有两个特殊的属性,可以访问全部文档:document.documentElement--全部文档 和 document.body--文档的主体。


	
		

Hello World!

DOM 很有⽤!

本例演示 document.body 属性。

8.5 childNodes和nodeValue

除了使用innnerHTML属性,也可以使用childNodes和nodeValue属性来获取元素的内容。


	
		

Hello World!

 

你可能感兴趣的:(Java,Web)