tagName与nodeName 有什么区别

转自:http://bbs.csdn.net/topics/310093611


例如

<标签名 属性="属性值">文本节点(包括回车换行等空字符)</标签名>
<xxx></xxx>或<xxx/>这种类型的称为元素
元素包含属性节点(就是上面的属性),也可包含其他节点,比如文本节点等
由于回车换行等空字符等空字符也是节点,所以
<xx>xx<xx>和
<xx>
xx
<xx>

从文档树上看是不一样的。(对于html显示可能是一样的)

还是举例说明吧:

html里
<div, <span等是HTML元素, 有tagName属性
文本则没有tagName属性但有nodeName属性


XML/HTML code
?
1
2
3
4
5
6
7
8
9
< div  id = "d" >asdasd</ div >
< script >
     var d = document.getElementById('d');
     alert(d.tagName); // div
     alert(d.nodeName); // div  d的tagName和nodeType相同
 
     alert(d.firstChild.tagName); // undefined
     alert(d.firstChild.nodeName); // #text 这里指的是文本节点或回车换行等的节点, 他们没有tagName只有nodeName
</ script >



根据 DOM,HTML 文档中的每个成分都是一个节点。

DOM 是这样规定的:

  ●整个文档是一个文档节点
  ●每个 HTML 标签是一个元素节点
  ●包含在 HTML 元素中的文本是文本节点
  ●每一个 HTML 属性是一个属性节点
  ●注释属于注释节点



  HTML DOM 重量元素的节点信息 

      元素类型 节点信息 
     nodeName   nodeValue nodeType 
元素 标签名称     不可用        1 
属性 属性名称     属性值        2 
文本 #text       文本          3 
注释                            8 
文档 #document    不可用      9 


从DOM层次来看,nodeName是node 接口上的property,而tagName是element 接口上的property,所有的节点(元素节点,属性节点,文本节点等12种)都继承了node接口,而只有元素节点才继承了element节点,因此nodeName比tagName具有更大的使用范围。

总结:tagName只能用在元素节点上,而nodeName可以用在任何节点上,可以说nodeName涵盖了tagName,并且具有更多的功能,因此建议总是使用nodeName。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值