1. 从ECMA到W3C

我们知道,ECMA定义的是js的变量语法等基础的标准规范,而W3C是针对浏览器API提出的规范, 所以我们要工作不可能只了解语法,我们的代码要在浏览器上跑起来就需要我们去了解W3C的标准。

    那么W3C规定了哪一系列的的API呢,DOM、BOM、AJAX、事件、存储等等。window.document.getElementById(),这东西相信大家都非常的熟悉,有没有觉得有点疑惑的地方document这东西是什么,在js基础中并没有这么一个一个对象,而这个就是W3C提出的浏览器内置更多的对象之一。

1.1 API的概念

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组程序的能力,而又无需访问源码,无需理解其内部工作机制细节,只需直接调用使用即可。

总之API就是为我们程序员提供了一个接口,帮助我们实现某种功能。

1.2 Web API的概念

Web API 是浏览器提供的一套操作浏览器功能和页面元素的 API ( BOM 和 DOM )。

现阶段我们主要针对于浏览器讲解常用的 API , 主要针对浏览器做交互效果。比如我们想要浏览器弹出一个警示框, 直接使用 alert(‘弹出’)

MDN 详细 API : https://developer.mozilla.org/zh-CN/docs/Web/API

2. 什么是DOM?

HTML DOM 是W3C (万维网联盟)制订的一套标准,标准中定义了所有 HTML元素的对象和属性,以及访问它们的方法。换言之,HTML DOM是关于如何获取、修改、添加或删除 HTML 元素的标准。

文档对象模型(Document Object Model),简称 DOM 。

document 对象是页面的主要“入口点”。我们可以使用它来更改或创建页面上的任何内容。

例如:

// 将背景颜色修改为红色
document.body.style.background = "red";

在这里,我们使用了 document.body.style,但还有很多很多其他的东西。

3. DOM 节点

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:

  • 整个文档是一个文档节点

  • 每个 HTML 元素是元素节点

  • HTML 元素内的文本是文本节点

  • 每个 HTML 属性是属性节点

  • 注释是注释节点

4. DOM 节点树

根据文档对象模型(DOM),每个 HTML 标签都是一个对象。嵌套的标签是闭合标签的“子标签(children)”。标签内的文本也是一个对象。

所有这些对象都可以通过 JavaScript 来访问,我们可以使用它们来修改页面。

例如,document.body 是表示 <body> 标签的对象。

<!DOCTYPE HTML>
<html>
<head>
  <title>About elk</title>
</head>
<body>
  The truth about elk.
</body>
</html>
  • DOM 将 HTML 表示为标签的树形结构。(参考下图)

  • 每个树的节点都是一个对象。

  • 标签被称为 元素节点(或者仅仅是元素),并形成了树状结构:<html> 在根节点,<head><body> 是其子项,等。

  • 元素内的文本形成 文本节点,被标记为 #text。一个文本节点只包含一个字符串。它没有子项,并且总是树的叶子。

    • 例如,<title> 标签里面有文本 "About elk"
    • 请注意文本节点中的特殊字符:换行符:空格:
    • 空格和换行符也都是一个#text 节点
  • 注释也会成为一个节点。

所以说HTML文档中,处处都是节点。但是,一般我们的DOM操作指得都是对元素节点的操作

5. 节点之间的关系

节点树中的节点彼此拥有层级关系,我们可以使用父(parent)、子(child)和同胞(sibling)等术语来描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

  • 在节点树中,顶端节点被称为根(root)

  • 每个节点都有父节点、除了根(它没有父节点)

  • 一个节点可拥有任意数量的子节点

  • 同胞是拥有相同父节点的节点

文档更新时间: 2023-01-05 17:32   作者:孙老师