DOM属性

节点属性:

  文档里的每个节点都有以下属性。

  nodeName

  nodeName属性将返回一个字符串,其内容是给定节点的名字:

name = node.nodeName

如果给定节点是一个属性节点,nodeName属性将返回这个属性的名字。

如果给定节点是文本节点,nodeName属性将返回一个内容#text的字符串。

nodeName属性是一个只读属性-----只能对他进行查询,不能进行设置

 

  • nodeType

nodeType属性将返回一个整数,这个数值代表给定节点类型:

integer = node.nodeType

nodeType属性有2种,nodeType属性所返回的整数值对应着一下12中节点类型之一:

  1. ELEMENT_NODE
  2. ATTRIBUTE_NODE
  3. TEXT_NODE
  4. CDATA_SECTION_NODED等等

在这12种节点类型中,前三种是最重要的,web上的绝大多数DOM脚本都需要与元素节点、属性节点和文本节点打交道。

nodeType属性通常与if语句配合使用,以确保不会再错误的节点类型上执行无效或非法的操作,在下例中,某个函数只有一个名为mynode的参数,这个参数可以是文档中任何一个元素,这个函数将为该元素添加一个取值为this is important的title属性。在此之前,它先检查mynode参数的nodeType属性,以确保这个参数所代表的节点确实是一个元素节点

function addTitle(mynode) {
    if ( mynode.nodeTyoe == 1 ) {
        mynode.setAttribute("title","this is important");  
    }  
}

nodeType属性是一个只读属性。

  • nodeValue

这个属性将返回一个字符串。

  如果给定节点是属性节点,nodeValue属性将返回这个属性的值

  如果给定的节点是文本节点,nodeValue属性将返回这个文本节点的内容

  如果给定节点是一个元素节点,nodeValue属性将返回null

nodeValue属性是一个读/写属性,不过,你不能对已经定义为null的值进行设置。换句话说,不能为元素节点nodeValue属性设置一个值,

下面的例子将不能工作,因为它试图为一个元素节点设置一个值:

var message = document.getElementById("fineprint");
message.nodeValue = " this won`t  work ";

下面的例子有可能可以工作,他试图为一个元素节点的第一个节点设置一个值,只要这个第一个节点是文本节点,新值就能设置成功:

var message = document.getElementById("fineprint");
message.firstChild.nodeValue = "this might work";

下面的例子肯定可以工作,这里增加了一项测试检查fineprint元素节点的第一个子节点是否为文本节点:

var message = document.getElementById("fineprint");
if ( message.firstChild.nodeType == 3 ) {
    message.firstChild.nodeValue = "this will work";
}

如果需要刷新某个文本节点的值,nodeValue属性提供了最简单机制,如果需要刷新某个属性节点的值,通过这个属性节点的父节点和setAttribute()方法之间的关系。

posted @ 2016-11-01 09:40  青竹zzq  阅读(337)  评论(0编辑  收藏  举报