DOM 简介 | 深入了解DOM

这篇具有很好参考价值的文章主要介绍了DOM 简介 | 深入了解DOM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、DOM是什么

二、DOM的访问

三、DOM节点类型

四、DOM的分级


DOM 简介 | 深入了解DOM,# ⭐️ DOM教程,# ⭐️ JS高级教程,JavaScript学习笔记,DOM,js,文档对象模型,核心DOM,HTML DOM,XML DOM,document

今天我们将了解WEB编程中一个重要的概念DOM(Document Object Model)文档对象模型,它帮助我们使用JavaScript(或其他编程语言)操纵文档。

一、DOM是什么

很多人会问 DOM 具体是什么东西呢?其实,DOM是HTML和XML文档的编程接口。它不同于把html源码在浏览器窗口当做页面或使用文本编辑器当做纯文本展示,它是对文档的另一种结构化的表述。DOM把文档的所有节点都解析为一个对象,并提供了一些属性和方法来描述它们。

根据W3C DOM规范,DOM是HTML与XML的应用编程接口(API),DOM将整个页面映射为一个由层次节点组成的文件。DOM 是文档对象模型(document object model)的缩写,它是一种提供对文档访问或修改方法的模型,它的范围很广,但对于 web 开发者来说,往往都认为它是指JavaScript在浏览器访问和修改html 文档的一种技术,但实际上范围远不局限在这里。

DOM是W3C的标准。它被分为3个部分:

  • 核心DOM:针对任何结构化文档的标准模型
  • XML DOM:针对XML文档的标准模型
  • HTML DOM:针对HTML文档的标准模型

核心DOM:是用于XML与HTML的共用接口;XMLDOM:XML专用接口;HTML DOM:HTML专用接口;

DOM不是一种编程语言,它是一种标准,一个模型,它与编程语言相对独立。编程语言都可以按照这种模型实现对文档的访问和处理。

注:因为我们主要是学习WEB编程,所以接下来文章中即将提到的DOM均指HTML DOM,使用到的DOM API也均是JavaScript脚本语言实现。

二、DOM的访问

我们知道,各个浏览器对JavaScript都有不同的实现,所以它们在实现DOM标准时,也会有一些差异,但它们既然都遵循了该标准,所以又呈现出了不同程度一致性。我们在使用DOM时,并不需要做任何特别的操作,如果碰到有差异的地方(主要体现在方法名称和参数上),只需根据不同浏览器使用他们各自实现的相关方法即可。实际上他们的实现都遵循了统一标准。

DOM把文档视做树结构:

  • 整个文档是一个文档节点。
  • 每个 HTML 标签是一个元素节点。
  • 包含在 HTML 元素中的文本是文本节点。
  • 每一个 HTML 属性是一个属性节点。
  • 注释属于注释节点。

HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。

DOM 简介 | 深入了解DOM,# ⭐️ DOM教程,# ⭐️ JS高级教程,JavaScript学习笔记,DOM,js,文档对象模型,核心DOM,HTML DOM,XML DOM,document

通过这个节点树,JavaScript可以轻松的访问并操作这些节点。Javascript获取到的每个节点都被解析成对象,遭DOM中,document是顶级对象,DOM元素的属性和方法大都源于此。

◼️ 举个栗子:请看下面这个HTML文档:

<html>
  <head>
    <title>DOM Tutorial</title>
  </head>
  <body>
    <h1>DOM Lesson one</h1>
    <p>Hello world!</p>
  </body>
</html>

上面所有的节点彼此间都存在关系。

除文档节点之外的每个节点都有父节点。举例,<head>和 <body>的父节点是 <html>节点,文本节点 "Hello world!" 的父节点是 <p>节点。

大部分元素节点都有子节点。比方说,<head>节点有一个子节点:<title>节点。<title>节点也有一个子节点:文本节点 "DOM Tutorial"。

当节点分享同一个父节点时,它们就是同辈(同级节点)。比方说,<h1>和 <p>是同辈,因为它们的父节点均是 <body>节点。

节点也可以拥有后代,后代指某个节点的所有子节点,或者这些子节点的子节点,以此类推。比方说,所有的文本节点都是 <html>节点的后代,而第一个文本节点是 <head>节点的后代。

三、DOM节点类型

每个节点对象有都有一个nodeType,nodeName和nodeValue属性,通过这几个属性的值,我们可以获取该节点的相关信息:

nodeType返回节点类型 nodeName 返回 nodeValue 返回
1 Element 元素名 null
2 Attr 属性名称 属性值
3 Text #text 节点的内容
4 CDATASection #cdata-section 节点的内容
5 EntityReference 实体引用名称 null
6 Entity 实体名称 null
7 ProcessingInstruction target 节点的内容
8 Comment #comment 注释文本
9 Document #document null
10 DocumentType 文档类型名称 null
11 DocumentFragment #document 片段 null
12 Notation 符号名称 null

四、DOM的分级

DOM 分级仅做了解即可。DOM的级别分类如下:

一级DOM(DOM Level 1)

1级DOM在1998年10月份成为W3C的推荐标准,由DOM核心(DOM Core)与DOM HTML两个模块组成。DOM核心能映射以XML为基础的文档结构,允许获取和操作文档的任意部分。DOM HTML通过添加HTML专用的对象与函数对DOM核心进行了扩展。简单来说,DOM1级就是映射文档结构和提供基本的文档操作方法。

二级DOM(DOM Level 2)

2级DOM在一级DOM的基础上进行了扩展,它引进了几个新DOM模块来处理新的接口类型:

  • DOM视图:描述跟踪一个文档的各种视图(使用CSS样式设计文档前后)的接口;
  • DOM事件:描述事件接口;
  • DOM样式:描述处理基于CSS样式的接口;
  • DOM遍历与范围:描述遍历和操作文档树的接口;根据DOM,HTML文档中的每个成分都是一个节点

DOM2级,就是对DOM1级进行扩展,2级DOM通过对象接口增加对鼠标和用户界面事件(DHTML长期支持鼠标与用户界面事件)、范围、遍历(重复执行DOM文档)和层叠样式表(CSS)的支持。同时也对DOM1进行了扩展,从而可支持XML命名空间。简单来说,DOM2级就是在DOM1的基础上增加了视图、事件、样式、遍历和范围的接口,和支持XML命名空间。

三级DOM(DOM Level 3)

3级DOM通过引入统一方式载入和保存文档和文档验证方法对DOM进行进一步扩展,DOM3包含一个名为“DOM载入与保存”的新模块,DOM核心扩展后可支持XML1.0的所有内容,包括XML Infoset、 XPath、和XML Base。 

DOM3级,在前面DOM基础上,引入了以统一方式加载和保存文档的方法,新增了验证文档的方法,同时也对DOM核心进行了扩展,开始支持XML1.0规范。 

零级DOM(DOM Level 0)

0级DOM其实并不真实存在,业内通常把W3C标准化之前的DOM相关称为0级DOM。

其实,除了上面的三个等级之外,还有一个叫DOM0级的东西,实际上标准并没有这个东西,它指的是IE4和Netscape Navigator 4.0 最初支持的DHTML,DHTML实际上是HTML、CSS和JS的一个集成,代表的是一种已有的技术,不是标椎,所以DOM0级其实代表的是历史节点中未形成标准的一个初期产物。

举一个常见的DOM0级事件和DOM2级事件的比较:绑定按钮的onclick赋值为一个函数就是DOM0级的,但是onclick多次赋值不同函数,最后也会被后面的函数覆盖掉;而DOM2级利用提供的addEventListener方法监听按钮的click事件,多次写监听同一个事件,函数会被依次执行的,不会被覆盖。

◼️ 参考资料

快速了解JavaScript的DOM模型 - 知乎 | DOM 的级别分类 - 简书

DOM所包含的主要内容有哪几部分 | DOM的分级_随笔_内存溢出

DOM 简介 | 深入了解DOM,# ⭐️ DOM教程,# ⭐️ JS高级教程,JavaScript学习笔记,DOM,js,文档对象模型,核心DOM,HTML DOM,XML DOM,document文章来源地址https://www.toymoban.com/news/detail-696231.html

到了这里,关于DOM 简介 | 深入了解DOM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript高级序列(一)–深入浏览器渲染原理

    1.1. 网页被下载的过程 一个网页URL从输入到浏览器中,到显示经历过怎么样的解析过程呢?  网页被下载的过程 整个过程我先做一个简单的概括: 下载 HTML 文件 当用户在浏览器中输入网址时,浏览器会向服务器发送请求,请求下载网站的 HTML 文件。 解析 HTML 文件 下载完成

    2024年04月10日
    浏览(30)
  • 深入了解JavaScript中的AJAX和HTTP请求

    在现代Web开发中,AJAX(Asynchronous JavaScript and XML)和HTTP请求被广泛应用于实现动态交互式网页。本文将深入探讨AJAX的概念、工作原理以及使用方法。 AJAX是一种利用JavaScript和HTTP请求与服务器进行异步通信的技术。传统的浏览器请求页面会刷新整个页面,而AJAX允许在不刷新页

    2024年02月08日
    浏览(34)
  • 【深入了解pytorch】PyTorch卷积神经网络(CNN)简介

    卷积神经网络(Convolutional Neural Network,CNN)是一种在计算机视觉任务中广泛应用的深度学习模型。它通过卷积层、池化层和全连接层等组件,能够有效地提取图像特征并实现高准确率的图像分类、目标检测和语义分割等任务。本文将详细介绍CNN的原理,并演示如何使用PyTor

    2024年02月16日
    浏览(31)
  • 11.初始JavaScript[初步了解何为js]

    大家好,我是晓星航。今天为大家带来的是 JavaScript的简单介绍 相关的讲解!😀 JavaScript (简称 JS) 是世界上最流行的编程语言之一 是一个脚本语言, 通过解释器运行 主要在客户端(浏览器)上运行, 现在也可以基于 node.js 在服务器端运行. JavaScript 最初只是为了完成简单的表单验

    2024年02月08日
    浏览(39)
  • 深入了解Js中的对象

    在JavaScript中,对象是个无序的键值对数据集。例如: 上述例子中的小强是一位年轻人,对于这个对象我们用一个括号进行定义。在括号体内我们描述了这个人的几种属性:姓名、年龄、所在城市,工作等。 每一个属性对应一个值,形成了一个数据集。 我们可以通过点操作符

    2024年02月05日
    浏览(36)
  • JavaScript高级教程(javascript实战进阶)

        分类: 基本数据(值)类型 String:任意字符串 Number:任意的数字 boolean:true/false undefined:undefined null:null 对象(引用)类型 Object:任意对象 Function:一种特别的对象(可以执行) Array:一种特别的对象(数值下标,内部数据是有序的) 判断: typeof:可以判断undef

    2024年02月07日
    浏览(35)
  • 11.与JavaScript深入交流-[js一篇通]

    大家好,我是晓星航。今天为大家带来的是 JavaScript语法描述 相关的讲解!😀 创建变量(变量定义/变量声明/变量初始化) var 是 JS 中的, 表示这是一个变量. = 在 JS 中表示 “赋值”, 相当于把数据放到内存的盒子中. = 两侧建议有一个空格 每个语句最后带有一个 ; 结尾

    2024年02月06日
    浏览(29)
  • JavaEE 初阶篇-深入了解 I/O 高级流(缓冲流、交换流、数据流和序列化流)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         1.0 缓冲流概述         1.1 缓冲流的工作原理         1.2 使用缓冲流的步骤         1.3 字节缓冲流于字符缓冲流的区别         1.4 字节缓冲流的实例         1.5 字符缓冲流的实例

    2024年04月29日
    浏览(39)
  • 深入了解Webpack:特性、特点和结合JS混淆加密的实例

    1. 模块化管理 Webpack支持将项目拆分为多个模块,允许开发者以模块化的方式组织代码。每个模块都有自己的依赖关系,Webpack能够自动解析这些依赖,从而构建出一个整体的资源文件。 2. 加载器和插件 Webpack使用加载器(Loaders)处理不同类型的文件,如JavaScript、CSS、图片等

    2024年02月11日
    浏览(42)
  • 深入了解Vue.js框架:构建现代化的用户界面

    目录 一.Vue前言介绍 二.Vue.js框架的核心功能与特性 三.MVVM的介绍  四.Vue的生命周期 五.库与框架的区别 1.库(Library): 2.框架(Framework): 六.Vue常用指令演示 1.v-model 2.v-on:click(简写:@click)     本篇博客将带你深入了解Vue.js框架的核心概念和强大功能 互关三连111 感谢大

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包