DOM之12种节点

news/2024/11/16 22:31:11/

目录

总括

元素节点

属性节点

文本节点

CDATA节点

实体引用名称节点

实体名称节点

处理指令节点

注释节点

文档节点

文档类型节点

文档片段节点

DTD声明节点


DOM是javascript操作网页的接口,全称为文档对象模型(Document Object Model)。它的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容)。浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组成一个树状结构。DOM的最小组成单位叫做节点(node),文档的树形结构(DOM树)由12种类型的节点组成。本文将主要说明DOM节点类型

总括

  一般地,节点至少拥有nodeTypenodeNamenodeValue这三个基本属性。节点类型不同,这三个属性的值也不相同

nodeType

  nodeType属性返回节点类型的常数值。不同的类型对应不同的常数值,12种类型分别对应1到12的常数值,如下:

12种节点分别为:                 

元素节点              Node.ELEMENT_NODE(1)
属性节点              Node.ATTRIBUTE_NODE(2)
文本节点              Node.TEXT_NODE(3)
CDATA节点             Node.CDATA_SECTION_NODE(4)
实体引用名称节点       Node.ENTRY_REFERENCE_NODE(5)
实体名称节点          Node.ENTITY_NODE(6)
处理指令节点          Node.PROCESSING_INSTRUCTION_NODE(7)
注释节点              Node.COMMENT_NODE(8)
文档节点              Node.DOCUMENT_NODE(9)
文档类型节点          Node.DOCUMENT_TYPE_NODE(10)
文档片段节点          Node.DOCUMENT_FRAGMENT_NODE(11)
DTD声明节点            Node.NOTATION_NODE(12)

DOM定义了一个Node接口,这个接口在javascript中是作为Node类型实现的,而在IE8-浏览器中的所有DOM对象都是以COM对象的形式实现的。所以,IE8-浏览器并不支持Node对象的写法

//在标准浏览器下返回1,而在IE8-浏览器中报错,提示Node未定义
console.log(Node.ELEMENT_NODE);//1

nodeName

  nodeName属性返回节点的名称

nodeValue

  nodeValue属性返回或设置当前节点的值,格式为字符串

        接下来,将按照节点类型的常数值对应顺序,从1到12进行详细说明

元素节点

  元素节点element对应网页的HTML标签元素。元素节点的节点类型nodeType值是1,节点名称nodeName值是大写的标签名,nodeValue值是null

  以body元素为例

// 1 'BODY' null
console.log(document.body.nodeType,document.body.nodeName,document.body.nodeValue)
console.log(Node.ELEMENT_NODE === 1);//true

属性节点

  元素特性节点attribute对应网页中HTML标签的属性,它只存在于元素的attributes属性中,并不是DOM文档树的一部分。特性节点的节点类型nodeType值是2,节点名称nodeName值是属性名,nodeValue值是属性值

  现在,div元素有id="test"的属性

<div id="test"></div>
<script>
var attr = test.attributes.id;
//2 'id' 'test'
console.log(attr.nodeType,attr.nodeName,attr.nodeValue)
console.log(Node.ATTRIBUTE_NODE === 2);//true    
</script>

文本节点

  文本节点text代表网页中的HTML标签内容。文本节点的节点类型nodeType值是3,节点名称nodeName值是'#text',nodeValue值是标签内容值

  现在,div元素内容为'测试'

<div id="test">测试</div>
<script>
var txt = test.firstChild;
//3 '#text' '测试'
console.log(txt.nodeType,txt.nodeName,txt.nodeValue)
console.log(Node.TEXT_NODE === 3);//true    
</script>

CDATA节点

  CDATASection类型只针对基于XML的文档,只出现在XML文档中,表示的是CDATA区域,格式一般为

<![CDATA[
]]>

该类型节点的节点类型nodeType的值为4,节点名称nodeName的值为'#cdata-section',nodevalue的值是CDATA区域中的内容

实体引用名称节点

  实体是一个声明,指定了在XML中取代内容或标记而使用的名称。 实体包含两个部分, 首先,必须使用实体声明将名称绑定到替换内容。 实体声明是使用 <!ENTITY name "value"> 语法在文档类型定义(DTD)或XML架构中创建的。其次,在实体声明中定义的名称随后将在 XML 中使用。 在XML中使用时,该名称称为实体引用。

  实体引用名称节点entry_reference的节点类型nodeType的值为5,节点名称nodeName的值为实体引用的名称,nodeValue的值为null

//实体名称
<!ENTITY publisher "Microsoft Press">
//实体名称引用
<pubinfo>Published by &publisher;</pubinfo>

实体名称节点

  上面已经详细解释过,就不再赘述

  该节点的节点类型nodeType的值为6,节点名称nodeName的值为实体名称,nodeValue的值为null

处理指令节点

  处理指令节点ProcessingInstruction的节点类型nodeType的值为7,节点名称nodeName的值为target,nodeValue的值为entire content excluding the target

注释节点

  注释节点comment表示网页中的HTML注释。注释节点的节点类型nodeType的值为8,节点名称nodeName的值为'#comment',nodeValue的值为注释的内容

  现在,在id为myDiv的div元素中存在一个<!-- 我是注释内容 -->

<div id="myDiv"><!-- 我是注释内容 --></div>
<script>
var com = myDiv.firstChild;
//8 '#comment' '我是注释内容'
console.log(com.nodeType,com.nodeName,com.nodeValue)
console.log(Node.COMMENT_NODE === 8);//true    
</script>

文档节点

  文档节点document表示HTML文档,也称为根节点,指向document对象。文档节点的节点类型nodeType的值为9,节点名称nodeName的值为'#document',nodeValue的值为null

<script>
//9 "#document" null
console.log(document.nodeType,document.nodeName,document.nodeValue)
console.log(Node.DOCUMENT_NODE === 9);//true    
</script>

文档类型节点

  文档类型节点DocumentType包含着与文档的doctype有关的所有信息。文档类型节点的节点类型nodeType的值为10,节点名称nodeName的值为doctype的名称,nodeValue的值为null

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var nodeDocumentType = document.firstChild;
//10 "html" null
console.log(nodeDocumentType.nodeType,nodeDocumentType.nodeName,nodeDocumentType.nodeValue);
console.log(Node.DOCUMENT_TYPE_NODE === 10);
</script>
</body>
</html>

文档片段节点

  文档片段节点DocumentFragment在文档中没有对应的标记,是一种轻量级的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源。该节点的节点类型nodeType的值为11,节点名称nodeName的值为'#document-fragment',nodeValue的值为null

<script>
var nodeDocumentFragment = document.createDocumentFragment();    
//11 "#document-fragment" null
console.log(nodeDocumentFragment.nodeType,nodeDocumentFragment.nodeName,nodeDocumentFragment.nodeValue);
console.log(Node.DOCUMENT_FRAGMENT_NODE === 11);//true
</script>

DTD声明节点

  DTD声明节点notation代表DTD中声明的符号。该节点的节点类型nodeType的值为12,节点名称nodeName的值为符号名称,nodeValue的值为null


http://www.ppmy.cn/news/238800.html

相关文章

螺栓、螺柱、螺钉的分类

螺栓、螺柱、螺钉的分类 螺栓、螺柱、螺钉是根据螺纹联接的类型进行分类的&#xff0c;螺纹联接的主要类型有4种&#xff1a;螺栓联接、螺柱联接、螺钉联接、紧定螺钉联接。因此常用螺纹紧固件所对应的联接类型分成螺栓、螺柱、螺钉&#xff08;包括紧定螺钉&#xff09;。常用…

十。和十一

第10 下面是不完整的类定义&#xff1a; class A { public&#xff1a; virtual void print&#xff08;&#xff09;{ cout << “print come form class A” << endl; } }; B类&#xff1a;公共A{ 私人&#xff1a; 字符*buf; public&#xff1a; void print&…

三十三、加密

本集重点 多层防御加密&解密凯撒加密替换加密移位加密&列移位加密德国Enigma加密机1977年“数据加密标准”2001年“高级加密标准”密钥交换用颜色来举例“单向函数”和“密钥加密”的原理迪菲——赫尔曼密钥交换非对称加密非对称加密算法 多层防御 在过去两集&#xf…

内存超频时序怎么调_内存超频(ddr4内存时序多少为好)

一般衡量内存的性能,主要看内存的频率和这个频率下的时序,而cl值又是内存时序的一项很重要的参数,cl值原则上越小越好。 这两套内存,一套2800mhz cl16,频率占。。 c14好,但是,如果频率一样,这点时序的差异是没有性能差距的,如果是3200c15,比2133c14性能反而好很多,频…

LKT6830C安全MCU(一):资源介绍

LKT6830C是以32位高安全CPU为基础开发的高性能、高安全性的MCU主控。LKT6830C 除了具有SPI、IIC、UART、GPIO等常用外设接口外同时芯片内置定时器、看门狗、PWM、DMA等功能。在充分保证芯片内部程序存储和运行安全的前提下&#xff0c;满足客户各种基本应用开发的要求。 LKT683…

uniapp没有localstorage可使用uni.setStorage

1: localStorage.getItem WEB应用的快速发展&#xff0c;本地存储一些数据也成为一种重要的需求&#xff0c;实现的方案也有很多&#xff0c;最普通的就是cookie了&#xff0c;大家也经常都用&#xff0c;但是cookie的缺点是显而易见的&#xff0c;其他的方案比如&#xff1a;…

Xilinx原语——IDDR与ODDR的使用(Ultrascale系列)

Xilinx原语——IDDR与ODDR的使用&#xff08;Ultrascale系列&#xff09; 一、IDDR1.1 OPPOSITE_EDGE1.2 SAME_EDGE1.3 SAME_EDGE_PIPELINED1.4 三种模式异同 二、ODDR三、IDDR与ODDR仿真3.1 IDDR仿真3.1.1 IDDR顶层3.1.2 TestBench3.1.3 仿真结果 3.2 ODDR仿真3.2.1 ODDR顶层文…

从git上拉取项目

目录 一、前期准备&#xff0c;获取git下载链接 二、idea下载 2.1.打开git下载界面 2.2.进入下载界面 2.3.下载前期配置 2.4.输入账号密码 2.5.下载完成后idea打开 2.6.下载完成后文件目录展示 三、命令行下载 3.1.打开所需要下载的项目路径 3.2.进入黑窗口 …