在谈论DOM时从HTML开始,在谈论HTML时从XML开始。XML是一种可扩展的标记语言。所谓的可扩展性就是它可以描述任何结构化数据。这是一棵树!
```
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<other>
<a></a>
<b></b>
</other>
</note>
HTML 是一个有既定标签标准的 XML 格式,标签的名字、层级关系和属性,都被标准化(否则浏览器无法解析)。同样,它也是一棵树。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>
<p>this is p</p>
</div>
</body>
</html>
我们开发的HTML代码将保存到文档中(通常以“.HTML”或“.htm”结尾)。文档放置在服务器上,浏览器将请求服务器。文件将被退回。因此,浏览器最终得到一个文档,文档的内容是HTML代码。
但浏览器需要根据标准将此文档中的HTML呈现为页面。此时,浏览器需要将这一堆代码处理成它能够理解的东西,也需要处理成JS能够理解的事情,因为必须允许JS修改页面内容。
基于以上要求,浏览器需要将HTML转换为DOM。HTML是一棵树,DOM也是一棵树。为了理解DOM,我们可以暂时抛开浏览器的内部因素,从JS开始。也就是说,我们可以认为DOM是JS可以识别的HTML结构,一个通用的JS对象或数组。