【ECMAScript】DOM节点类型知识点的梳理和总结

news2025/10/26 3:08:15
1. 前言

        本篇梳理和总结一下DOM相关知识点。

2. Node类型
属性和方法说明

Node.ELEMENT_NODE - 1

Node.ATTRIBUTE_NODE - 2

Node.TEXT_NODE - 3

Node.CDATA_SECTION_NODE - 4

Node.ENTITY_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_FRAMENT_NODE - 11

Node.NOTATION_NODE - 12

节点类型

Node.prototype.nodeName

Node.prototype.nodeValue

Node.prototype.childNodes

NodeList的实例,NodeList.prototype.item(index)

Node.prototype.parentNode

指向父节点
Node.prototype.previousSibling前一个兄弟节点
Node.prototype.nextSibling后一个兄弟节点
Node.prototype.firstChild第一个子节点
Node.prototype.lastChild最后一个子节点
Node.prototype.hasChildNodes()

功能:是否存在子节点

输入:无

输出:boolean

Node.prototype.contains(node)

功能:当前节点后代中是否存在节点node

输入:Node

输出:boolean

Node.prototype

.compareDocumentPosition(node)

功能:检测当前节点与节点node之间的关系

输入:Node

输出:0x1 | 0x2 | 0x4| 0x8 | 0x10

Node.prototype.ownerDocument

指向文档节点

Node.prototype.appendChild(newNode)

功能:在childNodes列表末尾添加新节点newNode,返回新添加节点newNode的引用

输入:Node

输出:Node

Node.prototype.insertBefore(newNode,refNode)

功能:插入到childNodes中的指定位置,即在参考节点refNode前插入新节点newNode,返回新添加节点newNode的引用

输入:Node, Node

输出:Node

Node.prototype.replaceChild(newNode, refNode)

功能:替换childNodes中指定节点,即用newNode去替换参考节点refNode,返回refNode引用

输入:Node, Node

输出:Node

Node.prototype.removeChild(node)

功能:移除childNodes中指定节点,返回被移除的节点引用

输入:Node

输出:Node

Node.prototype.cloneNode(deep?)

功能:复制节点,传true表示深度复制,复制整个子树,否则仅复制节点本身,返回新节点

输入:boolean?

输出:Node

Node.prototype.normalize()

功能:搜索节点的所有后代节点,删除空文本节点,合并同胞文本节点

规范化文本节点

3. Document类型
属性和方法说明
节点相关

document.nodeType等于9

document.nodeName等于‘#document’

document.nodeValue等于null

document.parentNode等于null

document.ownerDocument等于null

document是HTMLDocument实例化对象

HTMLDocument -> Document->Node

Document.prototype.documentElement

等同于document.childNodes[0]

或document.firstChild

快捷引用<html>

Document节点的子节点可以是

Node.ELEMENT_NODE - 1

Node.PROCESSING_INSTRUCTION_NODE-7

Node.COMMENT_NODE - 8

Node.DOCUMENT_TYPE_NODE - 10

Document.prototype.doctype快捷引用<!DOCTYPE html>
Document.prototype.body快捷引用body节点
Document.prototype.head快捷引用head节点
Document.prototype.title快捷引用title节点
文档地址相关
Document.prototype.URL取完整URL,和location.href相似
Document.prototype.domain(可设置)取域名,和locaiton.hostname
Document.prototype.referrer取来源
定位元素
Document.prototype.getElementById(id)

功能:通过标签的ID获取元素

输入:string

输出:Node

Document.prototype

.getElementsByTagName(tagName)

功能:通过标签名获取元素

输入:string(标签名字符串)

输出:HTMLCollection(和NodeList很像)

Document.prototype

.getElementsByClassName(className)

功能:通过类名获取所有匹配的后代元素

输入:类名字符串(空格隔开可传多个类名)

输出:NodeList

Document.prototype

.querySelector(selector)

功能:匹配该选择器的第一个后代元素,没有匹配返回null

输入:selector字符串

输出:Element | null

Document.prototype

.querySelectorAll(selector)

功能:匹配该选择器的后代所有元素,返回NodeList

输入:selector字符串

输出:NodeList

Document.prototype.anchors

功能:获取文档所有带name属性的<a>元素,值为HTMLCollection类型

Document.prototype.forms功能:获取文档中所有<form>元素,值为HTMLCollection类型
Document.prototype.images功能:获取文档中所有<img>元素,值为HTMLCollection类型
Document.prototype.links功能:获取文档中所有带href属性的<a>元素,值为HTMLCollection类型
文档写入
Document.prototype.write()功能:向网页输出流写入内容
Document.prototype.writeln()功能:向网页输出流写入内容,带换行符
Document.prototype.open()功能:打开网页输出流
Document.prototype.close()功能:关闭网页输出流

Document.prototype

.createElement(str)

功能:创建元素

输入:string - 标签字符串

输出:Element

Document.prototype

.createTextNode(str)

功能:创建文本节点

输入:string - 文本

输出:Text

Document.prototype

.createComent(str)

功能:创建注释节点

输入:string - 注释文本

输出:Comment

Document.prototype

.createCDATASection(str)

功能:创建CDATA区块节点

Document.prototype

.createDocumentFragment()

功能:创建文档片段

输入:无

输出:DocumentFragment

Document.prototype

.createAttribute(str)

功能:创建属性节点

输入:string - 属性名

输入:Attr

Document.prototype.activeElement功能:始终指向当前拥有焦点的DOM元素
Document.prototype.hasFocus()

功能:判断文档是否拥有焦点

输入:无

输出:boolean

Document.prototype.readyState

功能:表示文档状态 loading | complete

Document.prototype.compatMode

功能:返回渲染模式

标准模式的值'CSS1Compat'

混杂模式的值‘BackCompat’

Document.prototype.characterSet功能:当前文档使用的字符集
4. Element类型
属性和方法说明

nodeType等于1

nodeName值为元素的标签名

(同tagName返回大写标签名)

nodeValue值为null

parentNode值为Document或Element对象

HTMLxxxElement -> HTMLElement -> Element -> Node

Element类型节点的子节点可以是Element、Text、Coment、ProcessingInstruction、CDATASection、EntityReference等类型节点

id

元素在文档中惟一标识
className

一组或一类元素

title元素的提示信息
lang元素内容的语言
dir语言的方向
元素遍历
Element.prototype.childElementCount功能:返回子元素数量(不含文本节点和注释节点)
Element.prototype.firstElementChild功能:指向第一个子元素
Element.prototype.lastElementChild功能:指向最后一个子元素

Element.prototype

.previousElementSibling

功能:指向前一个同胞元素

Element.prototype

.nextElementSibling

功能:指向下一个同胞元素

检索元素

Element.prototype

.getElementsByTagName(tag)

功能:通过标签名获取元素

输入:string(标签名字符串)

输出:HTMLCollection(和NodeList很像)

Element.prototype

.getElementsByClassName(className)

功能:通过类名获取所有匹配的后代元素

输入:类名字符串(空格隔开可传多个类名)

输出:NodeList

Element.prototype

.querySelector(selector)

功能:匹配该选择器的第一个后代元素,没有匹配返回null

输入:selector字符串

输出:Element | null

Element.prototype

.querySelectorAll(selector)

功能:匹配该选择器的所有后代元素,返回NodeList

输入:selector字符串

输出:NodeList

Element.prototype.matches(selector)

功能:判断后代元素是否存在匹配该选择器的元素

输入:selector字符串

输出:boolean

属性的获取和设置

差异:

                       DOM对象                          getAttribute

针对类            ‘className’                      ‘class’

针对style        CSSStyleDeclaration        string

针对事件属性  Function                           源代码

总结:DOM编程中,直接取对象属性,用getAttribute取自定义属性

Element.prototype.getAttribute(attr)

功能:获取属性的值

输入:string

输出:any

Element.prototype.setAttribute(attr, value)

功能:新增或更新属性的值

输入:string, any

Element.prototype.removeAttribute(attr)

功能:移除属性

输入:string

Element.prototype.getAttributeNode(attr)

功能:获取属性节点

输入:string

输出:Attr

Element.prototype.setAttributeNode(attr)

功能:设置属性节点

输入:Attr

Element.prototype.attributes

功能:返回NamedNodeMap类型数据(属性节点集合,类似NodeList)

NamedNodeMap.prototype.getNamedItem(name)

NamedNodeMap.prototype.removeNamedItem(name)

NamedNodeMap.prototype.setNamedItem(node)

NamedNodeMap.prototype.item(pos) 

Element.prototype.classList

功能:方便操作className属性

classList是DOMTokenList实例

DOMTokenList.prototype.add(value)

向类名列表添加指定新类名

DOMTokenList.prototype.contains(value)

判断指定类型是否存在

DOMTokenList.prototype.remove(value)

从类名列表删除指定类名

DOMTokenList.prototype.toggle(value)

类名列表中存在指定类名,则删除

不存在,则添加

HTMLElement.prototype.dataset

功能:方便操作自定义数据属性

div.dataset.appID = 1

<div data-appID='1'></div>

dataset是DOMStringMap的实例

Element.prototype.innerHTML功能:读取或写入HTML字符串,写入的HTML字符串值以新的DOM子树替换元素中原来包含的所有节点。
Element.prototype.outerHTML功能:读取或写入HTML字符串,写入的HTML字符串值以新的DOM树替换包含当前节点本身及其他后代元素。
Element.prototype.innerText

功能:返回当前节点子代文本节点值的拼接结果 或 将当前节点内部替换成一个文本节点

Element.prototype.outerText功能:返回当前节点本身及后代文本节点值的拼接结果 或 将当前节点本身替换成一个文本节点

Element.prototype

.insertAdjacentHTML(place, htmlStr)

输入:beforebegin | afterbegin | beforeend | affterend, string

Element.prototype

.insertAdjacentText(place, text)

输入:beforebegin | afterbegin | beforeend | affterend, string
Element.prototype.scrollIntoView()

功能:滚动浏览器窗口或容器元素以便包含元 素进入视口

输入:alignToTop? | scrollIntoViewOptions?

Element.prototype.children

功能:返回Element类型的子元素集合 HTMLCollection

 5. Text类型
属性和方法说明

nodeType等于3

nodeName值为‘#text’

nodeValue值为文本

parentNode值为Element对象

只能为叶节点,不支持子节点

Text -> CharacterData->Node
CharacterData.prototype.data功能:节点的值

CharacterData.prototype

.appendData(text)

功能:向节点末尾添加文本text

CharacterData.prototype

.deleteData(offset, count)

功能:从位置offset开始删除count个字符

CharacterData.prototype

.insertData(offset, text)

功能:在位置offset插件text

CharacterData.prototype

.replaceData(offset, count, text)

功能:用text替换从位置offset到offset+count的文本

CharacterData.prototype

.substringData(offset, count)

功能:提取从位置offset到offset+count的文本
Text.prototype.splitText(offset)

功能:在位置offset将当前文本节点拆分为两个文本节点(与Node.prototyype.normalize相反),返回后面的节点

输入:number

输出:Text

6. Comment类型
属性和方法说明

nodeType等于8

nodeName值为'#comment'

noadeValue值为注释的内容

parentNode值为Document或Element对象

不支持子节点

Coment -> CharacterData -> Node

拥有CharacterData原型对象prototype上的所有方法和属性,操作起来和Text类型的节点类似

7. CDATASection类型(XML文档中有效)
属性和方法说明

nodeType等于4

nodeName值为‘#cdata-section’

nodeValue值为CDATA区块的内容

parentNode值为Document或Element对象

不支持子节点

<![CDATA[This is some content.]]>
8. DocumentType类型
属性和方法说明

nodeType等于10

nodeName值为文档类型的名称

nodeValue值为null

parentNode值为Document对象

不支持子节点

document.doctype.nodeName

得到'html'

document.doctype.name

得到'html'

document.doctype.entities

document.doctype.notations

9. DocumentFragment
属性和方法说明

nodeType等于11

nodeName值为'#document-fragment'

nodeValue值为null

parentNode值为null

DocumentFragment -> Node

子节点可以是Element 、ProcessingInstruction 、 Comment 、Text 、CDATASection或EntityReference

可以联想到<></>和<Fragment></Fragment>

10. Attr类型
性和方法说明

nodeType等于2

nodeName值为属性名

nodeValue值为属性值

parentNode值为null

HTML中不支持子节点

XML中支持Text或EntityReference

Attr -> Node

尽管属性节点也是节点,但不认为是DOM树一部分。

属性一般通过Element原型对象方法getAttribute、setAttribute、removeAttribute操作或DOM对象直接操作,而不通过

NamedNodeMap原型对象方法getNamedItem、removeNamedItem、setNamedItem、item操作

Attr.prototype.name与nodeName一样
Attr.prototype.value与nodeValue一样
Attr.prototype.specified布尔值,表示属性是使用默认值还是指定的值

备注:NodeList-节点集合、HTMLCollection-元素节点集合、NamedNodeMap - 属性节点集合

注:以上,如有不合理之处,还请帮忙指出,大家一起交流学习~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1330689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php反序列化漏洞原理、利用方法、危害

文章目录 PHP反序列化漏洞1. 什么是PHP反序列化漏洞&#xff1f;2. PHP反序列化如何工作&#xff1f;3. PHP反序列化漏洞是如何利用的&#xff1f;4. PHP反序列化漏洞的危害是什么&#xff1f;5. 如何防止PHP反序列化漏洞&#xff1f;6. PHP反序列化漏洞示例常见例子利用方法PH…

关于pygame无法打开对应文件解决办法 pyame.error unable to open file

问题描述&#xff1a; 问题原因&#xff1a; 由于pygame版本过低导致无法进行声音播放&#xff0c;升级对应版本即可完成&#xff01; 解决办法&#xff1a; 升级pygame包版本到2.1.2&#xff0c;即可解决该问题&#xff01; pip install --upgrade pygame2.1.2

html旋转相册

一、实验题目 做一个旋转的3d相册 二、实验代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&qu…

Linux Shell 001-Bash简介

Linux Shell 001-Bash简介 本节关键字&#xff1a;Linux、Bash Shell、shell分类 相关指令&#xff1a;bash、sh、cat Shell的介绍 计算机只能认识&#xff08;识别&#xff09;机器语言(0和1)&#xff0c;如&#xff08;11000000 这种&#xff09;。但是&#xff0c;我们的…

幺模矩阵-线性规划的整数解特性

百度百科:幺模矩阵 在线性规划问题中&#xff0c;如果A为幺模矩阵&#xff0c;那么该问题具有最优整数解特性。也就是说使用单纯形法进行求解&#xff0c;得到的解即为整数解。无需再特定使用整数规划方法。 m i n c T x s . t . { A x ≥ b x ≥ 0 \begin{align*} min \quad…

商家如何进行商业模式开发,助力产品更好的销售模式?

商家如何进行商业模式开发&#xff0c;助力产品更好的销售模式&#xff1f; 随着各类电商平台的疯狂崛起&#xff0c;越来越多的商家对其中带来的高额回报率产生心动&#xff0c;毕竟对于线上的场景来说&#xff0c;即省去了房租、水电、仓储以及其他各种费用&#xff0c;用电商…

使用Java语言中的算法输出杨辉三角形

一、算法思想 创建一个名为YanghuiTest的类,然后创建二维数组&#xff0c;然后遍历二维数组的第一层&#xff0c;然后初始化第二层数组的大小&#xff0c;然后遍历第二层数组&#xff0c;然后将两侧的数组元素赋为1&#xff0c;然后其它数值通过公式计算&#xff0c;最后可以输…

高级算法设计与分析(四) -- 贪心算法

系列文章目录 高级算法设计与分析&#xff08;一&#xff09; -- 算法引论 高级算法设计与分析&#xff08;二&#xff09; -- 递归与分治策略 高级算法设计与分析&#xff08;三&#xff09; -- 动态规划 高级算法设计与分析&#xff08;四&#xff09; -- 贪心算法 高级…

20231222给NanoPC-T4(RK3399)开发板的适配原厂Android10的挖掘机方案并跑通AP6398SV

20231222给NanoPC-T4(RK3399)开发板的适配原厂Android10的挖掘机方案并跑通AP6398SV 1、简略步骤&#xff1a;rootrootrootroot-X99-Turbo:~/3TB/3399-android10$ cat Rockchip_Android10.0_SDK_Release.tar.gz0* > Rockchip_Android10.0_SDK_Release.tar.gz rootrootrootro…

PIL/Pillow

Abstract PIL(Python Imaging Library)是一个用于图像处理的 Python 库。它提供了广泛的功能&#xff0c;包括图像加载、保存、调整大小、裁剪、旋转、滤镜应用等。 由于 PIL 的开发停止在 2009 年&#xff0c;因此推荐使用其后续的维护版本 Pillow。Pillow 是一个兼容 PIL 接…

安全认证【八】

文章目录 8. 安全认证8.1 访问控制概述8.2 认证管理8.3 授权管理8.4 准入控制 8. 安全认证 8.1 访问控制概述 Kubernetes作为一个分布式集群的管理工具&#xff0c;保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作…

Android wifi基础知识点

1、什么是 CSMA/CA &#xff1f; 以太网用 CSMA/CD 进行传输控制&#xff0c;而 IEEE 802.11 的 WLAN 采用的是 CSMA/CA 。 CSMA/CD &#xff0c;全称 Carrier Sense Multiple Access with Collision Detection &#xff0c;即 载波侦听多路访问/冲突检测协议。 载波侦听(Ca…

Qt中字符串转换为JS的函数执行

简介 在 QML 中&#xff0c;将 JavaScript 字符串转换为函数通常涉及使用 Function 构造函数或 eval() 函数。但是&#xff0c;QML 的环境对 JavaScript 的支持有一定的限制&#xff0c;因此不是所有的 JavaScript 功能都可以在 QML 中直接使用。 以下介绍都是在Qt5.12.1…

MATLAB - 使用 YOLO 和基于 PCA 的目标检测,对 UR5e 的半结构化智能垃圾箱拣选进行 Gazebo 仿真

系列文章目录 前言 本示例展示了在 Gazebo 中使用 Universal Robots UR5e cobot 模拟智能垃圾桶拣选的详细工作流程。本示例提供的 MATLAB 项目包括初始化、数据生成、感知、运动规划和积分器模块&#xff08;项目文件夹&#xff09;&#xff0c;可创建完整的垃圾桶拣选工作流…

5. 结构型模式 - 外观模式

亦称&#xff1a; Facade 意图 外观模式是一种结构型设计模式&#xff0c; 能为程序库、 框架或其他复杂类提供一个简单的接口 问题 假设你必须在代码中使用某个复杂的库或框架中的众多对象。 正常情况下&#xff0c; 你需要负责所有对象的初始化工作、 管理其依赖关系并按正确…

C++_运算符重载

目录 1、运算符重载的定义 2、实现‘<、的运算符重载 2.1 实现其余的比较运算符 3、实现‘’&#xff0c;‘-’&#xff0c;‘’&#xff0c;‘-’等运算符重载 4、前置、后置‘’‘--’ 5、流提取、流插入重载 6、赋值重载‘’ 结语&#xff1a; 前言&#xff1a; C中运…

SwiftUI 趣谈之:绝不可能(Never)的 View!

概览 SwiftUI 的出现极大的解放了秃头码农们的生产力。SwiftUI 中众多原生和自定义视图对于我们创建精彩撩人的 App 功不可没&#xff01; 不过&#xff0c;倘若小伙伴们略微留意过 SwiftUI 框架头文件里的源代码&#xff0c;就会发现里面嵌有一些奇怪 Never 类型&#xff0c…

antdesignpro实现滚动加载分页数据

原理解析&#xff1a;每滚动一次相当于翻页&#xff0c;请求后端时给的页码参数要想办法加1&#xff0c;后端才能根据页码给出相应数据 注意后端收到页码参数之后要准确计算出每页的首行数据&#xff0c;关键逻辑代码&#xff1a; # 根据前端传的页码&#xff0c;进行计算下一…

前端传输formDate格式的数据,后端不能用@RequestBody接收

写了个接口&#xff0c;跟前端对接&#xff0c;前端说怎么一直415的报错 我寻思不对啊&#xff0c;我swagger都请求成功了&#xff0c;后来发现前端一直是以formdata格式提交的数据&#xff0c;这样我其实是可以不加RequestBody的&#xff1b; 知识点&#xff1a; RequestBody…

核方法 : 多项式核函数

一、定义 多项式核函数&#xff1a; 将数据映射到高维空间&#xff0c;从而实现 低维线性不可分 到 高维线性可分 二、核心代码介绍 1、关于 PolynomialFeatures(degree3) &#xff1a; 三次多项式核函数 2、关于 svm_clf.decision_function &#xff1a; 推理 三、代码 …