访问相关节点
要访问<html/>元素(你应该明白这是该文件的document元素),你可以使用document的documentElement特性:
var oHtml = document.documentElement;
由于IE 5.5中的DOM实现的错误,document.documentElement会返回<body/>元素。IE 6.0已经修复了这个错误。
现在变量oHtml包含一个表示<html/>的HTMLElement对象。如果你想取得<head/>和<body/>元素,下面的可以实现:
也可以使用childNodes特性来完成同样的工作。只需把它当成普通的JavaScript Array,使用方括号标记:
你还可以通过使用childNodes.length特性来获取子节点的数量:
注意方括号标记其实是NodeList在JavaScript中的简便实现。实际上正式的从childNodes列表中获取子节点的方法是使用item()方法:
HTML DOM页定义了document.body作为指向<body/>元素的指针:
有了oHtml、oHead和oBody这三个变量,就可以先尝试确定它们之间的关系:
这一小段代码测试并验证了oBody和oHead的parentNode特性都是指向oHtml变量,同时使用previousSibling和nextSibling特性来建立它们之间的关系。最后一行确认了oHead的ownerDocument特性事实上是指向该文档。
不同浏览器在判断何为Text节点上存在一些差异。某些浏览器,如Mozilla,认为元素之间的空白都是Text节点;而另一些浏览器,如IE,会全部忽略这些空白。因为使用Mozilla方式很难确定哪些空白是Text节点,本书将采用IE的方式。