DOM

本文介绍了HTML中的DOM,它是一种用于操作HTML内容的API,以树形结构存储网页元素。节点对象有三个主要属性:nodeType、nodeName和nodeValue。DOM中包含了父子、兄弟等节点关系的获取方法,并提供了创建、添加、移除、替换、插入节点的函数,如createElement、appendChild等。此外,还提到了Gecko内核浏览器对空白符处理的影响以及各种查找元素的方法。
摘要由CSDN通过智能技术生成

在介绍DOM之前,我们首先来看一下下面的例子:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>DOM第一次体验</title>
</head>
<body>
 
	
	<div></div>
	<script>
		// 操作div的宽高背景颜色,并且每一次点击更换颜色
		var div = document.getElementsByTagName("div")[0];
		div.style.width = "100px";
		div.style.height = "100px";
		div.style.backgroundColor =  "#f00";
 
		var count = 0 ;
		div.onclick = function () {
			count ++;
			if( count % 2 == 1){
				this.style.backgroundColor = "#0f0";
			}else{
				this.style.backgroundColor = "#f00";
			}			
		}
		
	</script>
</body>
</html>

DOM分很多种,不同的开发语言都有所不同,这里讲的主要是HTML中的DOM。它是一种专门操作HTML内容的API,在实际的开发中,先用简单的DOM,也就是HTML中的,如果简单的不能解决问题,在采用核心DOM,核心DOM是能够操作所有结构化文档的。在网页中,一切在内存中都是以树形结构存储的,在HTML中,每一个元素,属性,文本都是一个节点对象。

节点对象的三大属性:

1、nodeType

nodeType 属性返回以数字值返回指定节点的节点类型。

如果节点是元素节点,则 nodeType 属性将返回 1。

如果节点是属性节点,则 nodeType 属性将返回 2。

专门区分节点的类型:

document 9

element 1

attribute 2

text 3

在需要区分节点类型的时候使用。

2、nodeName

nodeName 属性指定节点的节点名称。

如果节点是元素节点,则 nodeName 属性返回标签名。

如果节点是属性节点,则 nodeName 属性返回属性的名称。

对于其他节点类型,nodeName 属性返回不同节点类型的不同名称。

专门区分元素名称:

document #document
element 全大写的标签名
attribute 属性名
文本节点 #text

进一步区分元素名称时使用

3、nodeValue 属性根据节点的类型设置或返回节点的值。

document null
element null
attribute 属性值
text 文本的内容

在查找DOM树时,有三种元素不需要找,可以直接获得

document.documentElement document.head document.body

在DOM树中,不同的节点可以用不同称呼来形容,比如,节点在你前面一级的,称为父节点,在你后面一级的称为子节点,和你同一级的称为兄弟节点,以此类推,可以将所有节点都囊括进来。不同的节点当然也有不同的关系,通过这些关系可以查找到不同的元素,比如:

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<span>Hello World!</span>
	<ul id="nav">
		<li>aa</li>
		<li>bb
			<ul>
				<li>b1</li>
				<li>b2</li>
				<li>b3</li>
			</ul>
		</li>
		<li>cc</li>
	</ul>
</body>
<script type="text/javascript">
 
</script>
</html>

(1)父子关系

node.parentNode 获得node的父节点
node.childNodes 获得node的所有子节点
node.firstChild 获得node下的第一个子节点
node.lastChild 获得node下最后一个子节点

(2)兄弟关系

node.preivousSibling: 返回当前节点的前一个兄弟节点
node.nextSibling: 返回当前节点的下一个兄弟节点
网页中的一切都是节点,包括换行和空字符。

Gecko内核的浏览器会在源代码中标签内部有空白符的地方插入一个文本结点到文档中。因此,使用诸如 Node.firstChild 和 Node.previousSibling 之类的方法可能会引用到一个空白符文本节点, 而不是使用者所预期得到的节点。

添加 删除 替换 插入的方法:

1)创建、添加、移除、替换、插入
createElement() //创建
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //插入

2)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值