JS--JavaScript节点Node概述、节点类型、nodeType详解

本文深入解析了DOM(文档对象模型)中的各种节点类型,包括文档节点、元素节点、文本节点等,并介绍了如何通过nodeType属性判断节点类型。此外,还提供了一个示例,展示如何统计文档中的元素节点数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

节点Node概述

DOM 1.0定义了Node接口,该接口为DOM的所有节点类型定义了原始类型。JavaScript实现了这个接口,定义所有节点类型必须继承Node类型。作为Node的子类或孙类,都拥有Node的基本属性和方法。

节点类型

DOM规定:整个文档是一个文档节点,每个标签是一个元素节点,元素包含的文本是文本节点,元素的属性是一个属性节点,注释属于注释节点,如此等待。

每个节点都有一个nodeType属性,用于表明节点的类型,如下表:

DOM节点类型说明:

节点类型说明可包含的子节点
Document表示整个文档,DOM树的根节点Element(最多一个)、ProcessinInstruction、Comment、DocumentType
DocumentFragment表示文档片段,轻量级的Document对象,仅包含部分文档ProcessingInstruction、Comment、Text、CSATASection、EntityReference
DocumentType为文档定义的实体提供接口None
ProcessingInstruction表示处理指令None
EntityReference表示实体引用元素ProcessingInstruction、Comment、Text、CDATASection、EntityReference
Element表示元素Text、Comment
Attr表示属性Text、EntityReference
Text表示元素或属性中的文本内容None
CDATASection表示文档中的CDATA区段,其包含的文本不会被解析器解析None
Comment表示注解Nono
Entity表示实体ProcessingInstruction、Comment、Text、CDATASection、EntityReference
Notation表示在DTD中声明的符号None

使用nodeType属性返回值可以判断一个节点的类型:

节点类型nodeType返回值常量名
Element1ELEMENT_NODE
Attr2ATTRIBUTE_NODE
Text3TEXT_NODE
CDATASection4CDATA_SECTION_NODE
EntityReference5ENTITY_REFERENCE_NODE
Entity6ENTITY_NODE
ProcessingInstruction7PROCESSING_INSTRUCTION_NODE
Comment8COMMENT_NODE
Document9DOCUMENT_NODE
DocumentType10DOCUMENT_TYPE_NODE
DocumentFragment11DOCUMENT_FRAGMENT_NODE
Notation12NOTATION_NODE

示例:使用节点的nodeType属性检索当前文档中包含元素的个数:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<h1>DOM</h1>
		<p>DOM<cite>Document Object Model</cite>首字母简写,中文翻译为<b>文档对象模型</b>,是<i>W3C</i>组织推荐的处理可扩展标识语言的标准编程接口。</p>
		<ul>
			<li>D表示文档,HTML文档结构</li>
			<li>O表示对象,文档结构的JavaScript脚本化映射</li>
			<li>M表示模型,脚本与结构交互的方法和行为</li>
		</ul>
		<script>
			function count(n){
				var num = 0;
				if(n.nodeType == 1)//检查是否为元素节点
					num++;
				var son = n.childNodes;//获取所有子节点
				for(var i = 0; i < son.length; i++){
					num += count(son[i]); //递归统计
				}
				return num;
			}
			alert("当前文档包含:" + count(document) + " 个元素");
		</script>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值