首页 » DOM » Node 类型

Node 类型

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

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

  • Node.ELEMENT_NODE(1);
  • Node.ATTRIBUTE_NODE(2);
  • Node.TEXT_NODE(3);
  • Node.CDATA_SECTION_NODE(4);
  • Node.ENTITY_REFERENCE_NODE(5);
  • Node.ENTITY_NODE(6);
  • Node.PROCESSING_INSTRUCTION_NODE(7);
  • Node.COMMENT_NODE(8);
  • Node.DOCUMENT_NODE(9);
  • Node.DOCUMENT_TYPE_NODE(10);
  • Node.DOCUMENT_FRAGMENT_NODE(11);
  • Node.NOTATION_NODE(12);

通过比较上面的这些常量,可以很容易地确定节点的类型,例如:

if (someNode.Type == Node.ELEMENT_NODE) {    //在IE中无效
    alert("Node is an element.");
}

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

if (someNode.nodeType == 1) {    //适用于所有的浏览器
    alert("Node is an element.")
}

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

nodeName和nodeValue属性

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

if (someNode.nodeType == 1) {
    value = someNode.nodeName;    //nodeName的值是元素的标签名。
}

在这个例子中,首先检查节点类型,看它是不是一个元素。如果是,则取得并保存nodeName的值。对于元素节点,nodeName中保存的始终都是元素的标签名,而nodeValue的值始终都是null。

此文章发表在 DOM. 将 固定链接 加入收藏.