DOM模型将整个文档(XML文档和HTML文档)看成一个树形结构,并用document对象表示该文档。

根据W3C DOM规范,DOM是HTML与XML的应用编程接口(API),DOM将整个页面映射为一个由层次节点组成的文件。有1级、2级、3级共3个级别。

DOM规定文档中的每个成分都是一个节点(Node),可以说HTML文档是由节点构成的集合,常见DOM节点有:

  • 文档节点(Document):代表整个文档

  • 元素节点(Element):文档中的一个标记

  • 文本节点(Text):标记中的文本

  • 属性节点(Attr):代表一个属性,元素才有属性

DOM节点类型

NodeType属性来表明节点类型,下面列举12中节点类型

  节点类型 描述
1 Element 代表元素
2 Attr 代表属性
3 Text 代表元素或属性中的文本内容。
4 CDATASection 代表文档中的 CDATA 部分(不会由解析器解析的文本)。
5 EntityReference 代表实体引用。
6 Entity 代表实体。
7 ProcessingInstruction 代表处理指令。
8 Comment 代表注释。
9 Document 代表整个文档(DOM 树的根节点)。
10 DocumentType 向为文档定义的实体提供接口
11 DocumentFragment 代表轻量级的 Document 对象,能够容纳文档的某个部分
12 Notation 代表 DTD 中声明的符号。

DOM节点关系

nodeType 返回节点类型的数字值(1~12)
nodeName 元素节点:标签名称(大写)、属性节点:属性名称、文本节点:#text、文档节点:#document
nodeValue

文本节点:包含文本、属性节点:包含属性、元素节点和文档节点:null

hasChildNodes 包含一个或多个节点时返回true
contains 如果是后代节点返回true
isEqualNode 两个节点引用的是同一个对象:传入节点与引用节点的引用为同一个对象返回true
isSameNode 指的是两个节点是否是同一类型,具有相等attributes/childNodes等
compareDocumentPostion 确定节点之间的各种关系
parentNode 父节点
parentElement 父节点标签元素
childNodes 所有子节点
children 第一层子节点
firstChild 第一个子节点,Node 对象形式
firstElementChild 第一个子标签元素
lastChild 最后一个子节点
lastElementChild 最后一个子标签元素
previousSibling 上一个兄弟节点
previousElementSibling 上一个兄弟标签元素
nextSibling 下一个兄弟节点
nextElementSibling 下一个兄弟标签元素
childElementCount 第一层子元素的个数(不包括文本节点和注释)
ownerDocument 指向整个文档的文档节点

节点与元素的区别

element是包含在node里的,它的nodeType是1

parentElement匹配的是parent为element的情况,而parentNode匹配的则是parent为node的情况。

当父节点的nodeType不是1,即不是element节点的话,它的parentElement就会是null

Document文档对象元素查找

BOM核心为window,DOM核心为document(文档对象)

获取Element对象

getElementById()

一个参数:元素标签的ID
getElementsByTagName() 一个参数:元素标签名
getElementsByName() 一个参数:name属性名
getElementsByClassName() 一个参数:包含一个或多个类名的字符串
querySelector() 接收CSS选择符,返回匹配到的第一个元素,没有则null
querySelectorAll() 接收CSS选择符,返回一个数组,没有则返回[]

元素对象ELEMENT操作

所有DOM对象都可以被认为是一个节点,除了CURD DOM树(appendChild/removeChild/replaceChild)外,还有其他操作

nodeName 访问元素的标签名
tagName 访问元素的标签名
createElement() 创建节点
appendChild() 末尾添加节点,并返回新增节点
insertBefore() 参照节点之前插入节点,两个参数:要插入的节点和参照节点
insertAfter() 参照节点之后插入节点,两个参数:要插入的节点和参照节点
replaceChild() 替换节点,两个参数:要插入的节点和要替换的节点(被移除)
removeChild() 移除节点
cloneNode() 克隆,一个布尔值参数,true为深拷贝,false为浅拷贝
importNode() 从文档中复制一个节点,两个参数:要复制的节点和布尔值(是否复制子节点)
insertAdjacentHTML()

插入文本,两个参数:插入的位置和要插入文本

  • "beforebegin",在该元素前插入

  • "afterbegin",在该元素第一个子元素前插入

  • "beforeend",在该元素最后一个子元素后面插入

  • "afterend",在该元素后插入

节点属性attributes

attributes

获取所有标签属性
getAttribute() 获取指定标签属性
setAttribute() 设置指定标签属
removeAttribute() 移除指定标签属
createAttribute 创建属性

参考文章:

ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)https://www.cnblogs.com/best/p/8028168.html

JavaScript学习总结(三)BOM和DOM详解 https://segmentfault.com/a/1190000000654274

Javascript操作BOM和DOM详解(1) https://blog.csdn.net/openbox2008/article/details/85260063

JavaWeb学习总结:JavaScript(BOM和DOM) https://blog.csdn.net/weixin_42384085/article/details/99807198

HTML DOM Event 对象 https://www.w3school.com.cn/jsref/dom_obj_event.asp

XML DOM - Element 对象 https://www.w3school.com.cn/xmldom/dom_element.asp

JAVAScript中DOM与BOM的差异分析 https://www.cnblogs.com/fjner/p/5892325.html

转载本站文章《再谈BOM和DOM(2):DOM节点层次/属性/选择器/节点关系/操作详解》,
请注明出处:https://www.zhoulujun.cn/html/webfront/SGML/xml/2020_0317_8347.html

再谈BOM和DOM(2):DOM节点层次/属性/选择器/节点关系/操作详解的更多相关文章

  1. JQuery(一)---- JQ的选择器,属性,节点,样式,函数等操作详解

    JQuery的基本概念 JQuery是一个javascript库,JQuery凭借着简洁的语法和跨平台的兼容性,极大的简化了js操作DOM.处理事件.执行动画等操作.JQuery强调的理念是:'wri ...

  2. JavaScript基础:DOM操作详解

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 JavaScript的组成 JavaScript基础分为三个部分: ...

  3. 使用DOM进行xml文档的crud(增删改查)操作<操作详解>

    很多朋友对DOM有感冒,这里我花了一些时间写了一个小小的教程,这个能看懂,会操作了,我相信基于DOM的其它API(如JDOM,DOM4J等)一般不会有什么问题. 后附java代码,也可以下载(可点击这 ...

  4. javascript dom 操作详解 js加强

    js加强操作实现代码. 1 .文档里的每个节点都有属性 nodeName . nodeValue . nodeType nodeName 文本节点的的节点名是 #text , nodeName 是只读 ...

  5. js学习--DOM操作详解大全 前奏(认识DOM)

    一 . 节点属性 DOM 是树型结构,相应的,可以通过一些节点属性来遍历节点树: 方法 说明 nodeName 节点名称,相当于tagName.属性节点返回属性名,文本节点返回#text.nodeNa ...

  6. [js高手之路] dom常用API【appendChild,insertBefore,removeChild,replaceChild,cloneNode】详解与应用

    本文主要讲解DOM常用的CURD操作,appendChild(往后追加节点),insertBefore(往前追加节点),removeChild(移除节点),replaceChild(替换节点),clo ...

  7. JavaScript的事件、DOM模型、事件流模型以及内置对象详解(三)

    JS中的事件 JS中的事件分类 1.鼠标事件: click/dbclick/mouseover/mouseout 2.HTML事件: onload/onunload/onsubmit/onresize ...

  8. jQuery的DOM操作详解

    DOM(Document Object Model-文档对象模型):一种与浏览器, 平台, 语言无关的规则, 使用该接口可以轻松地访问页面中所有的标准组件DOM操作的分类 核心-DOM: DOM Co ...

  9. java中四种操作(dom、sax、jdom、dom4j)xml方式详解与比较

    1)DOM(JAXP Crimson解析器)     DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特 ...

  10. JavaScript 的DOM操作详解

    内容概要 DOM之查找标签 基本查找 间接查找 节点操作 获取值操作 class操作 样式操作 事件 内置参数this 事件练习 内容详细 DOM操作 DOM(Document Object Mode ...

随机推荐

  1. 面试题:MySQL事务的ACID如何实现?

    大家好,我是[码老思],事务是一个数据库绕不开的话题,今天和大家一起聊聊. 事务是什么? 事务(Transaction)是并发控制的基本单位.所谓的事务呢,它是一个操作序列,这些操作要么都执行,要么都 ...

  2. zookeeper源码(04)leader选举流程

    在"zookeeper源码(03)集群启动流程"中介绍了leader选举的入口,本文将详细分析leader选举组件和流程. leader选举流程(重要) quorumPeer的st ...

  3. 《流畅的Python》 读书笔记 第7章_函数装饰器和闭包

    第7章 函数装饰器和闭包 装饰器这个名称可能更适合在编译器领域使用,因为它会遍历并注解句法树 函数装饰器用于在源码中"标记"函数,以某种方式增强函数的行为.这是一项强大的功能,但是 ...

  4. 03Java学习_注释和代码规范

    注释和代码规范 目录 注释和代码规范 注释 注释介绍 单行注释 多行注释 文档注释 代码规范 注释 注释介绍 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性(可读性):注释 是一个程序员必 ...

  5. 基于OpenAi通用特定领域的智能语音小助手

    无穷尽的Q&A 钉钉...钉钉... 双双同学刚到工位,报销答疑群的消息就万马纷沓而来.她只能咧嘴无奈的摇摇头.水都还没有喝一口就开始"人工智能"的去回复.原本很阳光心情开 ...

  6. 【Javaweb】JavaEE项目的三层架构 | 快速搭建

    逻辑类图 分层的目的是为了解耦.解耦就是为了降低代码的耦合度.方便项目后期的维护和升级. 不同的层有不同的包 web层 com.stguigu.web/servlet/controller servi ...

  7. 记一次解决RestTemplate和HttpClient请求结果乱码的问题

    调用一个接口,发送POST请求,浏览器和Postman均返回正常,代码中用RestTemplate和HttpClient均返回乱码 开始一直以为是编码问题导致,网上查了解决方法,也看了源码,都不对症 ...

  8. Azure - 机器学习企业级服务概述与介绍

    Azure 机器学习 - 为端到端机器学习生命周期使用企业级 AI 服务. 关注TechLead,分享AI全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦 ...

  9. 吉特日化MES & 医药行业相关专业术语汇总

  10. 加速计算,为何会成为 AI 时代的计算力“新宠” 审核中

    随着科技的发展,处理大量数据和进行复杂计算的需求越来越高,人工智能.大数据和物联网等领域更是如此,传统的计算方式已经无法满足这些需求.因此,加速计算作为一种现代计算方式,成了必要的手段.加速计算具有前 ...