转自:http://bbs.youkuaiyun.com/topics/310093611
例如
<标签名 属性="属性值">文本节点(包括回车换行等空字符)</标签名><xxx></xxx>或<xxx/>这种类型的称为元素
元素包含属性节点(就是上面的属性),也可包含其他节点,比如文本节点等
由于回车换行等空字符等空字符也是节点,所以
<xx>xx<xx>和
<xx>
xx
<xx>
从文档树上看是不一样的。(对于html显示可能是一样的)
还是举例说明吧:
html里
<div, <span等是HTML元素, 有tagName属性
文本则没有tagName属性但有nodeName属性
如
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 是这样规定的:
●整个文档是一个文档节点
●每个 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。