跳到主要内容

JavaScript DOM 模型

DOM 是 Document Object Model 的缩写,即文档对象模型,它是针对 XML 但经过扩展用于 HTML 的应用程序编程接口(API)。DOM 把整个 HTML 页面映射为一个多层节点结构,页面中的每个组成部分都是某种类型的节点,而这些节点又包含着不同类型的数据。

一个网页的显示需要用到 HTML、CSS 和 JavaScript 三种技术,下面我们来看看网页加载背后的工作,以及神秘的 DOM 模型。

HTML 页面幕后​

浏览器加载并显示一个 HTML 页面,需要多种技术的配合,大致过程如下:

  1. 浏览器加载一个文档,其中包括用 HTML 写的标记和用 CSS 写的样式;
  2. 浏览器加载页面的同时,会为文档创建一个内部模型,其中包含 HTML 标记的所有元素,称为文档对象模型(Document Object Model),即 DOM;
  3. 通常还会加载 JavaScript 代码,并在页面加载之后开始执行这些代码。

实际上,JavaScript 就是通过 DOM 与 HTML 页面交互的,这样就可以对用户或浏览器生成的事件做出响应,或者使用 API 访问音频和视频、使用画布完成 2D 绘图、访问本地存储等等。

HTML 页面完全加载之后再执行 JavaScript 代码是有好处的,因为如果在 DOM 还没完全创建就执行 JavaScript 代码,可能会出错。另外,过早执行 JavaScript 代码也会影响页面加载速度,对用户体验不友好。

DOM 的基本操作​

下面演示一些 JavaScript 操作 DOM 对象动态修改 HTML 页面的示例。

查找 HTML 元素​

1) 通过 id 找到 HTML 元素​

使用方法 document.getElementById() 通过元素 id 查找,是在 DOM 中查找 HTML 元素的最简单的方法。

示例:

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Demo</title>
</head>
<body>
<p id="intro">Hello World</p>
<script>
var x = document.getElementById("intro");
x.innerHTML = "人人都懂物联网";
</script>
</body>
</html>

2) 通过标签名找到 HTML 元素​

方法 document.getElementsByTagName() 用于通过标签名查找 HTML 元素。

示例:先查找 id="main" 的元素,然后再查找该元素中的所有 <p> 元素

var x = document.getElementById("main");
var y = x.getElementsByTagName("p");

3) 通过类名找到 HTML 元素​

方法 document.getElementById() 用于通过类名查找 HTML 元素。

示例:

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Demo</title>
</head>
<body>
<p class="intro">Hello World</p>
<script>
var x = document.getElementById("intro");
x.innerHTML = "人人都懂物联网";
</script>
</body>
</html>