美文网首页让前端飞Web前端之路编程语言爱好者
《JS原理、方法与实践》- DOM概述

《JS原理、方法与实践》- DOM概述

作者: 张中华 | 来源:发表于2020-07-08 23:32 被阅读0次

    什么是DOM?

    DOM 是 JavaScript 操作网页的接口,全称为“文档对象模型”(Document Object Model)。它的作用是将网页转为一个 JavaScript 对象,从而可以用脚本进行各种操作(比如增删内容)。

    浏览器会根据 DOM 模型,将结构化文档(比如 HTML 和 XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口。

    DOM 只是一个接口规范,可以用各种语言实现。所以严格地说,DOM 不是 JavaScript 语法的一部分,但是 DOM 操作是 JavaScript 最常见的任务,离开了 DOM,JavaScript 就无法控制网页。另一方面,JavaScript 也是最常用于 DOM 操作的语言。

    DOM的作用是规范文档跟对象的转换方式,例如,文档跟对象之间怎么转换,文档的相关对象都有哪些类型,每种对象都有哪些属性,都可以进行哪些操作,以及不同对象之间有什么关系等内容。

    DOM并不是ES的一部分,而是一套独立的系统,有自己的标准,并且DOM仅用于网页的HTML文件中,同时还用于很多其他类型的文件中,例如XML,MXML,SVG等。

    DOM和JavaScript

    DOM不是一个编程语言,但没有DOM,JavaScript语言不会有任何网页,XML页面以及涉及到的元素的概念或模型;在文档中的每个元素-包括整个文档都是文档对象模型(DOM)的一部分,因此他们可以使用DOM和一个脚本语言(JavaScript)来访问和处理
    开始的时候,JavaScript和DOM是交织在一起的,但它们最终演变成了两个独立的实体。JavaScript可以访问和操作存储在DOM中的内容,因此我们可以写成这个近似的等式:
    API (web 或 XML 页面) = DOM + JS (脚本语言)

    节点

    DOM 的最小组成单位叫做节点(node)。文档的树形结构(DOM 树),就是由各种不同类型的节点组成。每个节点可以看作是文档树的一片叶子。

    节点的类型有七种。

    Document:整个文档树的顶层节点
    DocumentType:doctype标签(比如<!DOCTYPE html>)
    Element:网页的各种HTML标签(比如<body>、<a>等)
    Attribute:网页元素的属性(比如class="right")
    Text:标签之间或标签包含的文本
    Comment:注释
    DocumentFragment:文档的片段
    浏览器提供一个原生的节点对象Node,上面这七种节点都继承了Node,因此具有一些共同的属性和方法。

    节点树

    一个文档的所有节点,按照所在的层级,可以抽象成一种树状结构。这种树状结构就是 DOM 树。它有一个顶层节点,下一层都是顶层节点的子节点,然后子节点又有自己的子节点,就这样层层衍生出一个金字塔结构,倒过来就像一棵树。

    浏览器原生提供document节点,代表整个文档。

    document
    // 整个文档树
    

    文档的第一层只有一个节点,就是 HTML 网页的第一个标签<html>,它构成了树结构的根节点(root node),其他 HTML 标签节点都是它的下级节点。

    除了根节点,其他节点都有三种层级关系。

    父节点关系(parentNode):直接的那个上级节点
    子节点关系(childNodes):直接的下级节点
    同级节点关系(sibling):拥有同一个父节点的节点

    DOM 提供操作接口,用来获取这三种关系的节点。比如,子节点接口包括firstChild(第一个子节点)和lastChild(最后一个子节点)等属性,同级节点接口包括nextSibling(紧邻在后的那个同级节点)和previousSibling(紧邻在前的那个同级节点)属性。

    如果觉得文章写得还行,请点个赞。如果想与我进一步交流,可以关注我的公众号或者加我的微信。

    个人微信
    公众号_前端微说.jpg

    相关文章

      网友评论

        本文标题:《JS原理、方法与实践》- DOM概述

        本文链接:https://www.haomeiwen.com/subject/xyjkcktx.html