`
wuye1200
  • 浏览: 10718 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JavaScript中的nodeName nodeType nodeValue区别

阅读更多

在JavaScript中,存在有nodeName 、nodeType、 nodeValue这三个属性,今天我们来了解下JavaScript中的nodeName 、nodeType 、nodeValue区别

nodeName

nodeName 属性含有某个节点的名称。

* 元素节点的 nodeName 是标签名称
* 属性节点的 nodeName 是属性名称
* 文本节点的 nodeName 永远是 #text
* 文档节点的 nodeName 永远是 #document

注释:nodeName 所包含的 XML 元素的标签名称永远是大写的.


nodeValue

对于文本节点,nodeValue 属性包含文本。

对于属性节点,nodeValue 属性包含属性值。

nodeValue 属性对于文档节点和元素节点是不可用的。
nodeType

nodeType 属性可返回节点的类型。

最重要的节点类型是:
元素类型 节点类型
元素element 1
属性attr 2
文本text 3
注释comments 8
文档document 9

HTML文件:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>DOM标准</title>
<script type="text/javascript" src="test.js"></js>
</head>
<body>
<h1 id="h1">An HTML Document</h1>
<p id="p1">This is a <i>W3C HTML DOM</i> document.</p>
<p><input id="btnDemo1" type="button" value="取H1 Element节点值"></p>
<p><input id="btnDemo2" type="button" value="取H1 Element节点文本"></p>
<p><input id="btnDemo3" type="button" value="取Document Element节点文本"></p>
<p><input type="button" alt="这是个演示按钮" title="演示按钮提示标题" name="btnShowAttr" id="btnShowAttr" value="按钮节点演示" /></p>
</body>
</html>

 

JS:

function showElement(){
var element=document.getElementById("h1");//h1是一个<h1>标签
alert('nodetype:'+element.nodeType);//nodeType=1
alert('nodeName:'+element.nodeName);
alert('nodeValue:'+element.nodeValue); //null
alert('element:'+element);
}

function showText(){
var element=document.getElementById("h1");
var text=element.childNodes[0];
alert('nodeType:'+text.nodeType);  //nodeType=3
alert('nodeValue:'+text.nodeValue);  //文本节点的nodeValue是其文本内容
text.nodeValue=text.nodeValue+"abc"; //文本内容添加修改删除等等。
alert('nodeName:'+text.nodeName);
alert(text.data);   //data同样是其内容,这个属性下同样可以增删改。
}

function showDocument(){
alert('nodeType:'+document.nodeType);  //9
alert('nodeName:'+document.nodeName);
alert(document);
}

function showAttr(){
var btnShowAttr=document.getElementById("btnShowAttr"); //演示按钮,有很多属性
var attrs=btnShowAttr.attributes;
for(var i=0;i<attrs.length ;i++){
var attr=attrs[i];
alert('nodeType:'+attr.nodeType); //attribute 的nodeType=2
alert('attr:'+attr);
alert('attr.name:'+attr.name+'='+attr.value);
}
}

function demo(){
var btnDemo1=document.getElementById("btnDemo1");
btnDemo1.onclick=showElement; //按钮1取节点nodetype值
var btnDemo2=document.getElementById("btnDemo2");
btnDemo2.onclick=showText;
var btnDemo3=document.getElementById("btnDemo3");
btnDemo3.onclick=showDocument;
var btnShowAttr=document.getElementById("btnShowAttr");
btnShowAttr.onclick=showAttr;
}
window.onload=demo;

  

1. nodeName属性: 节点的名字。

如果节点是元素节点,那么返回这个元素的名字。此时,相当于tagName属性。
比如:
<p>aaaa</p>  : 则返回 p ;
如果是属性节点,nodeName将返回这个属性的名字。
如果是文本节点,nodeName将返回一个#text的字符串。

另外我要说的是: nodeName属性是一个只读属性,不能进行设置.(写)
它返回 大写字母的值。

 

2. nodeType属性 : 返回一个整数,代表这个节点的类型。
我们常用的3中类型:
nodeType == 1  : 元素节点
nodeType == 2  : 属性节点
nodeType == 3  : 文本节点
如果想记住的话,我们可以这么去记:
比如:

<p  title="cssrain" >test</p>   从前往后读: 你会发现先是元素节点(1),然后是属性节点(2),最后是文本节点(3),这样你就很容易记住了 nodeType分别代表什么类型了。(我总结的一点小技巧, ^_^。)

nodeType属性经常跟 if 配合使用,以确保不会在错误的节点类型上 执行错误的操作。
比如:
function cs_demo(mynode){
      if(mynode.nodeType == 1){
              mynode.setAttribute("title","demo");
        }
}
代码解释: 先检查mynode的nodeType属性,以确保它所代表的节点确实是 一个元素节点。
和nodeName属性一样,他也是只读属性,不能进行设置.(写)。

 

3. nodeValue属性 : 返回一个字符串,这个节点的值。
如果节点是元素节点,那么返回null;(注意下)
如果是属性节点,nodeValue将返回这个属性的值。
如果是文本节点,nodeValue将返回这个文本节点的内容。
比如:
<div id="c">aaaaaaaaaaaaaaaa</div>

<SCRIPT LANGUAGE="JavaScript">
 var c= document.getElementById("c");
 alert(  c.nodeValue  );//返回null

 nodeValue是一个可以读、写的属性。 但它不能设置元素节点的值。
再看看下面的例子:
<div id="c">aaaaaaaaaaaaaaaa</div>

 var c= document.getElementById("c");
  c.nodeValue =" dddddddddddd"; //不能设置
  //alert( c.firstChild.nodeValue ) //元素节点 包括属性节点和文本节点。
  c.firstChild.nodeValue =  "test"//能设置

当然我们为了确保能正确运行:可以加一段代码:
<div id="c">aaaaaaaaaaaaaaaa</div>

var c= document.getElementById("c");
  c.nodeValue =" dddddddddddd"; //不能设置
  //alert( c.firstChild.nodeValue )
  if( c.firstChild.nodeType==3 ){ //判断是不是 文本节点
  c.firstChild.nodeValue =  "test"//能设置
  }

//可以看出,如果要设置元素节点,不能直接设置,而必须先使用firstChild或者lastChild等 然后设置nodeValue.
nodeValue一般只用来设置 文本节点的值。如果要刷新属性节点的值,一般使用setAttribute().

 

分享到:
评论
2 楼 heronlyj 2012-09-01  
多谢分享~~~
1 楼 lllt 2011-04-07  
写这么多一定要赞一个!

相关推荐

    XML实例教程:nodeName、nodeValue和nodeType属性

    本文详细介绍了nodeName、nodeValue和nodeType属性

    浅谈nodeName,nodeValue,nodeType,typeof 的区别

    本文主要简单介绍了nodeName,nodeValue,nodeType,typeof 的区别,算是知识点的一个小总结,希望对小伙伴们有所帮助

    HTML DOM的nodeType值介绍

    nodeName、nodeValue 以及 nodeType 包含有关于节点的信息。nodeName 属性含有某个节点的名称。 元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 #text 文档节点的 ...

    javascript获取元素文本内容的通用函数

    [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]将HTML DOM中几个容易常用的属性做下记录: nodeName、nodeValue 以及 nodeType 包含有关于节点的信息。 nodeName 属性含有某个节点的名称。 元素节点的 nodeName 是...

    浅谈Javascript中的12种DOM节点类型

    一般地,节点至少拥有nodeType、nodeName和nodeValue这三个基本属性。 节点类型不同,这三个属性的值也不相同 nodeType nodeType属性返回节点类型的常数值。不同的类型对应不同的常数值,12种类型分别对应1到12的常...

    JavaScript详解(第2版)

     15.3.3 nodeName和nodeType属性   15.3.4 空白bug   15.4 遍历DOM   15.5 DOM查看器   15.6 查询DOM的快捷方式   15.6.1 document.getElement-ById()方法   15.6.2 document.getElements-...

    javascript dom 操作详解 js加强

    1 、文档里的每个节点都有属性 nodeName 、 nodeValue 、 nodeType nodeName 文本节点的的节点名是 #text , nodeName 是只读属性 nodeValue 1 元素节点 2 属性节点 3 文本节点 只读属性 nodeType 不能用于元素节点 ...

    整理JavaScript对DOM中各种类型的元素的常用操作

    nodeName,nodeValue 节点关系 childNodes: 每个节点都有一个childNodes属性,其中保存着一个NodeList对象 firstChild: 等同于childNodes[0] lastChild: 等同于childNodes.length-1 同时通过使用列表中每个节点的...

    关于javascript document.createDocumentFragment()

    也支持以下DOM2屬性: attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling,

    javascript操作XML

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") 'JAVASCRIPT中的创建对象 set objXml=CreateObject("Microsoft.XMLDOM") '创建解析器对象 objXml.async="false" objXml.load("test.xml") '装载xml文件 ...

    JS实现访问DOM对象指定节点的方法示例

    使用getElementById()方法来访问指定id的节点,并用nodeName属性、nodeType属性和nodeValue属性来显示出该节点名称、节点类型和节点值。 1、nodeName属性 该属性用来获取某一个节点的名称。 [sName=]obj.nodeName ...

    FlashMXAction简易手册.zip

    FlashMXAction简易手册.zip XML.nodeName 类型: 对象属性 ...注意:只有 XML 元素 (nodeType == 1) 节点可以拥有节点名称,如果访问一个 XML 文本 (nodeType == 3) 节点的 nodeName 属性,将返回 null 。

    javascript面向对象入门基础详细介绍

    什么是对象 简单点说,编程语言中的对象是对现实中事物的简化。例如,我们一个人就是一个对象,但是编程语言很难完全描述一...例如,我们知道,DOM节点有一些信息、例如nodeName、nodeType等,其实这些信息就是节点对象

    在javascript中关于节点内容加强

    liElements[i].nodeName&#41;; alert&#40;liElements[i].nodeType&#41;; alert&#40;liElements[i].nodeValue&#41;; } 二、属性节点 代码如下:[/c//测试属性节点,输出属性节点名称,节点的类型,节点的值 var ...

    Javascript入门学习第八篇 js dom节点属性说明第1/2页

    比如: nodeName,nodeType…..今天我们详细的讲解下。 1,nodeName属性 : 节点的名字。 如果节点是元素节点,那么返回这个元素的名字。此时,相当于tagName属性。 比如: &lt;p&gt;aaaa : 则返回 p ; 如果是属性...

    JavaScript HTML DOM元素 节点操作汇总

    在文档对象模型 (DOM) 中,每个节点都是一个对象。DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType :节点的类型 节点类型:元素 1 ,属性 2 ,文本 3 ,注释 8,文档 9...

    HTML node相关的一些资料整理

    * 元素节点的 nodeName 是标签名称 * 属性节点的 nodeName 是属性名称 * 文本节点的 nodeName 永远是 #text * 文档节点的 nodeName 永远是 #document 注释:nodeName 所包含的 XML 元素的标签名称永远是大写的 2....

    浅谈JS之tagNaem和nodeName

    这个和css中的倾斜和斜体的关系是一样的。不是所有元素都有斜体的,但是都能倾斜。 以上这篇浅谈JS之tagNaem和nodeName就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

    html文档类型

    html文档类型

Global site tag (gtag.js) - Google Analytics