10.1DOM的节点层次

来源:互联网 发布:九品网络电视官方下载 编辑:程序博客网 时间:2024/06/02 02:19

Dom(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口)。DOM描绘了一个层次化的节点数,允许开发人员添加、移除、和修改页面的某一部分。DOM脱胎于微软创始的DHTML,但现在他已经成为表现和操作页面的真正的跨平台、语言中立的方式。

1998年10月DOM1级规范成为了W3C的推荐标注,为基本的文档结构及查询提供了接口。本章主要讨论与浏览器中的HTML页面相关的DOM1级的特性和应用,以及JavaScript对DOM1级的实现。IE,Firefox,Safari、Chrome都非常完善实现了DOM。

DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构。节点分为几种不同的类型,每种类型分别表示文档中不同的信息及标记。每一个节点都拥有各自的特点、数据和方法,另外也与其他节点存在某种关系。节点之间的关系构成了层次,而所有页面标记则表现为一个以特定节点为跟节点的树形结构。以下面的HTML为例:

<html>

<head>

<title>Sample page</title>

</head>

<body>

<p>Hello World</p>

</body>

<html>

可以将这个简单的HTML文档表示为一个层次结构。

文档节点是每个文档的根节点。在这个例子中,文档节点只有一个子节点,及html元素,我们称之为文档元素。文档元素是文档的最外层元素,文档中其他所有元素都包含在文档元素中。每个文档只能有一个文档元素。在HTML页面中,文档元素始终都是html元素。在XML中,没有预定义的元素,因为任何元素都可能成为文档元素。

每一段标记都可以通过树中的一个节点来表示:HTML元素通过元素节点表示,特性(attribute)通过特性节点表示,文档类型通过文档类型表示,而注释则通过注释节点表示。总共有12种节点类型,这些类型都继承自一个基类型。

10.1.1 Node类型

DOM1级定义了一个Node接口,该接口将由DOM中的所有节点类型实现,这个Node接口在JavaScript中是作为Node类型的实现,除了IE之外,在其他所有浏览器中都可以访问到这个类型。JavaScript中的所有节点类型都继承自Node类型,因此所有节点类型都共享着相同的基本属性和方法。

每个节点都有一个nodeType属性,用于表明节点的类型。节点类型由在Node类型中定义的下列12个数值常量来表示,任何节点类型必居其一:

通过比较了someNode.nodeType与Node.ELEMENT_NODE常量。如果二者相等,则意味着someNode确实是一个元素。然而,由于IE没有公开Node类型的构造函数,因此上面的代码在IE中会导致错误。为了确保夸浏览器兼容,最好还是将nodeType属性与数字进行比较,如下所示:

if(someNode.nodeType==1){

console.log(1);

}

并不是所有节点都受到web浏览器的支持。开发人员最常用的就是元素和文本节点。

1.nodeName和nodeValue属性

要了解节点的具体信息,可以使用nodeValue和nodeValue这两个属性。这两个属性的值完全取决于节点的类型。在使用者两个以前,最好像下面这样先检测一下节点的类型。
























0 0