DOM属性
节点属性:
文档里的每个节点都有以下属性。
nodeName
nodeName属性将返回一个字符串,其内容是给定节点的名字:
name = node.nodeName
如果给定节点是一个属性节点,nodeName属性将返回这个属性的名字。
如果给定节点是文本节点,nodeName属性将返回一个内容#text的字符串。
nodeName属性是一个只读属性-----只能对他进行查询,不能进行设置
- nodeType
nodeType属性将返回一个整数,这个数值代表给定节点类型:
integer = node.nodeType
nodeType属性有2种,nodeType属性所返回的整数值对应着一下12中节点类型之一:
- ELEMENT_NODE
- ATTRIBUTE_NODE
- TEXT_NODE
- 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()方法之间的关系。