javascript中的DOM操作

1. 什么是 DOM?
DOM是W3C(万维网联盟)的标准.
DOM 定义了访问 HTML 和 XML 文档的标准:
“W3C文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容\结构和样式.”
W3C DOM标准被分为3个不同的部分:
(1)核心 DOM - 针对任何结构化文档的标准模型
(2)XML DOM - 针对 XML 文档的标准模型
(3)HTML DOM - 针对 HTML 文档的标准模型
注:DOM 是 Document Object Model(文档对象模型)的缩写
2. JavaScript 中 DOM 节点操作
在HTML DOM中,所有事物都是节点.DOM是被视为节点树的 HTML.
HTML 文档中的所有内容都是节点:
整个文档是一个文档节点;
每个 HTML 元素是元素节点;
HTML 元素内的文本是文本节点;
每个 HTML 属性是属性节点;
注释是注释节点.

HTML 文档中的所有内容都是节点:
​    整个文档是一个文档节点
​    每个 HTML 元素是元素节点
​    HTML 元素内的文本是文本节点
​    每个 HTML 属性是属性节点
​    注释是注释节点
​    节点父、子和同胞
​    节点树中的节点彼此拥有层级关系。
​    父(parent)、子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

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

3. JavaScript 的 DOM 方法

方法是我们可以在节点(HTML 元素)上执行的动作。 编程接口 可通过 JavaScript (以及其他编程语言)对 HTML DOM 进行访问。 所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属 性。

方法是您能够执行的动作(比如添加或修改元素)。 属性是您能够获取或设置的值(比如节点的名称或内容)。

HTML DOM 对象 - 方法和属性

(1)一些常用的 HTML DOM 方法:
访问 HTML 元素(节点)常用的访问 HTML 元素的方法:

(1) getElementById()方法
getElementById() 方法返回带有指定 ID 的元素。语法:document.getElementById(“id 值”) ;

(2) getElementsByTagName()方法
getElementsByTagName() 返回带有指定标签名的所有元素。语法:元素.getElementsByTagName(“标签名称”);

(3) getElementsByClassName()方法
getElementsByClassName() 返回带有指定 class 的元素。语法:元素.getElementsByTagName(“class 值”);

(4) getElementsByName()方法
getElementsByName() 返回带有指定 name 的元素。语法:元素.getElementsByTagName(“name 值”);

对于元素节点的操作
(1) appendChild()方法
​    功能:把新的子节点添加到指定节点

(2) removeChild()方法
​    功能:删除子节点

(3) replaceChild()方法
​    功能:替换子节点。

(4) insertBefore()方法
​    功能:在指定的子节点前面插入新的子节点。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>元素节点的操作</title>
		<script type="text/javascript">
			window.onload=function(){
				var div1=document.getElementById('div1');
				var p1=document.getElementById('p1');
				//(1),appendChild()		把新的子节点添加到指定节点中
//				div1.appendChild(p1);
				//(2),removeChild()		删除子节点
				var span1=document.getElementById('span1');
//				div1.removeChild(span1);
				//(3),raplaceChild()	替换子节点
				var span2=document.getElementById('span2');
				var p2=document.getElementById('p2');
//				div1.replaceChild(p2,span2);
				//(4),insertBefore()	在指定的子节点前插入新的子节点
				var span3=document.getElementById('span3');
//				div1.insertBefore(span3,span1);
			}
		</script>
	</head>
	<body>
		<div id="div1">
			<span id="span1"></span>
			<span id="span2"></span>
		</div>
		<p id="p1"></p>
		<p id="p2"></p>
		<span id="span3"></span>
	</body>
</html>

对于节点属性及内容的操作
(1) createElement()方法
功能:创建元素

(2) createTextNode()方法
功能:创建文本节点

(3) createAttribute()方法
功能:创建属性节点

(4) getAttribute()方法
功能:返回指定的属性值

(5) setAttribute()方法
功能:把指定属性设置或修改为指定的值

(6)setAttributeNode()方法
功能:将属性节点添加到指定的节点

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>节点属性和内容的操作</title>
		<script type="text/javascript">
			window.onload=function(){
			//(1),createElement()	创建元素节点
				var body=document.getElementsByTagName('body')[0];
				//创建了一个p标签
				var p1=document.createElement('p');
				//把新的子节点添加到指定节点中	(将p添加到body中)
				body.appendChild(p1);
				var p2=document.createElement('p');
				body.appendChild(p2);
			//(2),createTextNode()		创建文本节点
				var txt1=document.createTextNode('创建了一个文本节点');
				//把新的子节点添加到指定节点中	(将txt1添加到p1中)
				p1.appendChild(txt1);
			//(3),createAttribute()		创建属性节点
				var clas=document.createAttribute('class');
				var id=document.createAttribute('id');
				clas.value='p1';
				id.value='p1';
			//setAttributeNode():将属性节点添加到指定的节点
				p1.setAttributeNode(clas);
				p1.setAttributeNode(id);
			//(4),getAttribute()			获取属性节点值
				alert(p1.getAttribute('class'));
			//(5),setAttribute()			把指定的属性值或修改为指定的值
				p1.setAttribute('id','p_01');
			}
			
		</script>
	</head>
	<body>
		<div id="div1"></div>
	</body>
</html>

常用的 HTML DOM 属性
(1) innerHTML 属性
功能: 设置或返回表格行的开始和结束标签之间的 HTML

(2) parentNode 属性
功能:以 Node 对象的形式返回指定节点的父节点;如果指定节点没有父节点,则返回 null。

(3) childNodes 属性
功能:返回节点的子节点集合,以 NodeList 对象

(4) attributes 属性
功能: 返回指定节点的属性集合,即 NamedNodeMap

(5) nodeName 属性
功能: nodeName 属性指定节点的节点名称。

(6) nodeValue 属性
功能: 设置或返回指定节点的节点值

(7)nodeType    属性
功能:节点元素的类型
​    nodeType 属性返回以数字值返回指定节点的节点类型。
​    如果节点是元素节点,则 nodeType 属性将返回 1。
​    如果节点是属性节点,则 nodeType 属性将返回 2。

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>常用的HTML DOM操作</title>
		<script type="text/javascript">
			window.onload=function(){
			//(1),innerHTML
				var div1=document.getElementById('div1');
				div1.innerHTML='<p>innerHTML</p>';
			//(2),parentNode	节点元素的父节点
				var div2=document.getElementById('div2');
				var spans=document.getElementsByTagName('span')[0];
				var h1=document.getElementsByTagName('h1')[0];
//				alert(spans.parentNode);		//显示结果为:[object HTMLDivElement]
//				alert(h1.parentNode);			//显示结果为:[object HTMLBodyElement]
			//(3),childNades	节点元素的子节点
//				alert(div2.childNodes);			//显示结果为:[object NodeList]		返回节点的子节点集合
			//(4),attributes	节点元素的属性节点
//				alert(div1.attributes);			//显示结果为:[object NamedNodeMap]
				//获取节点元素属性节点的长度
				var length=div1.attributes.length;
//				alert(length);					//显示结果为:2
			//(5),nodeName		节点元素的值
				//获取span标签的父节点元素的值
//				alert(spans.parentNode.nodeName);		//获取结果为:DIV
				//获取h1标签的父节点元素的值
//				alert(h1.parentNode.nodeName);			//获取结果为:BODY
			//(6),nodeValue		节点元素的值
				var btn=document.getElementById('btn');
				btn.addEventListener('click',myClick);
				function myClick(){
					h1.innerHTML=btn.childNodes[0].nodeValue;
				}
			//(7),nodeType		节点元素的类型
			/*nodeType 属性返回以数字值返回指定节点的节点类型。
			如果节点是元素节点,则 nodeType 属性将返回 1。
			如果节点是属性节点,则 nodeType 属性将返回 2。*/
				alert(spans.nodeType);		//返回:1	元素节点
			//创建一个属性节点	createAttribute()
				var clas=document.createAttribute('class');
				clas.value='div2';
			//setAttributeNode():将属性节点添加到指定的节点
			//如果这个指定的属性已存在,则此方法会替换它。
				div1.setAttributeNode(clas);
				alert(clas.nodeType);		//返回:2	属性节点
			}
		</script>
	</head>
	<body>
		<div id="div1" class="div1"></div>
		<div id="div2">
			<span></span>
		</div>
		<h1>按一下获取节点元素的值</h1>
		<button id="btn">按一下试试</button>
	</body>
</html>

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值