为了测试和探索DOM,创建一个名为domTesting.js的脚本文件,并将它与ADS.js和myLogger.js一同包含到sample.html文件中。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>DOM Tree Sample Document</title>
<!-- inclue some CSS style sheet to make everything look a little nicer -->
<link rel="stylesheet" type="text/css" href="../../shared/source.css" />
<link rel="stylesheet" type="text/css" href="../chapter.css" />
<!-- Your ADS library with the common JavaScript objects -->
<script type="text/javascript" src="../../ADS-final-verbose.js"></script>
<!-- Log object from Chapter 2 -->
<script type="text/javascript" src="../../chapter2/myLogger-final/myLogger.js"></script>
<!-- Your testing file -->
<script type="text/javascript" src="domTesting.js"></script>
</head>
<body>
<h1>DOM Tree</h1>
<div id="content">
<p>Examining the DOM2 Core and DOM2 HTML Recommendations</p>
<h2>Browsers</h2>
<p>Typically, you'll be expecting the following browsers:</p>
<!-- Other browsers could be added but we'll keep the list
short for the example. -->
<ul id="browserList">
<li id="firefoxListItem">
<a href="http://www.getfirefox.com/"
title="Get Firefox"
id="firefox">Mozilla Firefox</a>
</li>
<li>
<a href="http://www.microsoft.com/windows/ie/downloads/"
title="Get Microsoft Internet Explorer"
id="msie">Microsoft Internet Explorer</a>
</li>
<li>
<a href="http://www.apple.com/macosx/features/safari/"
title="Check out Safari"
id="safari">Apple Safari</a>
</li>
<li>
<a href="http://www.opera.com/download/"
title="Get Opera"
id="opera">Opera</a>
</li>
</ul>
</div>
</body>
</html>
sample.html文档的结果如下图所示:

sample.html文档结构的树形表示为:

当浏览器解析sample.html中的标记时,会把标记解析为对象。文档中的每个标签都可以用一个核心对象来表示。下图展示了按照W3C标准来解析sample.html文档:

注意到标签之间的空白都被转换成了Text节点,这是DOM规范中规定的对空白符和换行符的处理方式。之所以采取这种方式来处理,主要是希望DOM树能够反映文档中的所有信息。如果把标签之间的空白去掉如下所示那样:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>DOM Tree Sample Document</title><!-- include some CSS style sheet to make everything look a little nicer --><link rel="stylesheet" type="text/css" href="../../shared/source.css" /><link rel="stylesheet" type="text/css" href="../chapter.css" <!-- ADS Library (full version from source linked here) --><script type="text/javascript" src="../../ADS-final-verbose.js"></script><!-- Log object from Chapter 2 --><script type="text/javascript" src="../../chapter2/myLogger-final/myLogger.js"></script><!-- Your testing file --><script type="text/javascript" src="domTesting.js"></script></head><body><h1>AdvancED DOM Scripting</h1><div id="content"><p>Examining the DOM2 Core and DOM2 HTML Recommendations</p><h2>Browsers</h2><p>Typically, you'll be expecting the following browsers:</p><!-- Other browsers could be added but we'll keep the list short for the example. --><ul id="browserList"><li id="firefoxListItem"><a href="http://www.getfirefox.com/"title="Get Firefox" id="firefox">Firefox 2.0</a></li><li><a href="http://www.microsoft.com/windows/ie/downloads/" title="Get Microsoft Internet Explorer" id="msie">Microsoft Internet Explorer 7</a></li> <li><a href="http://www.apple.com/macosx/features/safari/" title="Check out Safari" id="safari">Safari</a></li><li><a href="http://www.opera.com/download/" title="Get Opera" id="opera" >Opera 9</a></li> </ul></div></body></html>
那么W3C DOM2核心就不会再出现额外的Text节点,如下图所示:

上面的树形图无法展示对象之间的继承关系。当浏览器解析完sample.html文档后,每个节点并非只是一个单纯的Element对象,而是继承了很多属性和方法。Element对象继承了Node对象的所有属性和方法。具体到<a>标签,该标签是一个DOM2 HTML规范中国的HTMLAnchorElement对象,继承关系如下图所示:

继承是面向对象语言中的一个重要组成部分,通过继承可以在各种对象之间维护公有的功能。继承也解释了什么段落<p>和锚<a>元素都是Element对象,但在最终文档的DOM对象中,却存在由DOM2 HTML规范中的HTMLParagraphElement对象和HTMLAnchorElement对象规定的不同属性。