HTML DOM节点属性详解:nodeName、nodeValue与nodeType
本文详细解析HTML DOM中节点的核心属性:nodeName、nodeValue和nodeType。通过具体代码示例,说明元素、文本、属性及文档节点在获取名称、值及类型时的区别与返回值,帮助开发者准确操作DOM节点。
DOM节点核心属性概述
在HTML DOM中,nodeName、nodeValue以及nodeType这三个属性提供了关于节点的基本信息。
nodeName属性用于获取某个节点的名称。
对于元素节点,其nodeName即为该元素的标签名称。
对于属性节点,其nodeName对应的是属性的名称。
文本节点的nodeName始终固定为#text。
文档节点的nodeName始终固定为#document。
需要注意的是,nodeName所包含的XML元素标签名称始终为大写形式。
接下来介绍nodeValue属性。
当节点为文本节点时,nodeValue属性包含实际的文本内容。
当节点为属性节点时,nodeValue属性包含该属性的值。
对于文档节点和元素节点,nodeValue属性不可用,通常返回null。
nodeType节点类型详解
最后介绍nodeType属性。
nodeType属性用于返回节点的类型编号。
以下是几种最重要的节点类型及其对应的数值:
| 元素类型 | 节点类型 |
|---|---|
| 元素element | 1 |
| 属性attr | 2 |
| 文本text | 3 |
| 注释comments | 8 |
| 文档document | 9 |
补充说明如下:
数值与元素类型的对应关系如下:
1代表ELEMENT(元素节点)
2代表ATTRIBUTE(属性节点)
3代表TEXT(文本节点)
4代表CDATA(CDATA区段)
5代表ENTITY REFERENCE(实体引用)
6代表ENTITY(实体)
7代表PI(处理指令)
8代表COMMENT(注释节点)
9代表DOCUMENT(文档节点)
10代表DOCUMENT TYPE(文档类型节点)
11代表DOCUMENT FRAGMENT(文档片段节点)
12代表NOTATION(符号节点)
HTML文件:
DOM操作代码示例
以下是一个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> 对应的JavaScript代码如下:
具体实现代码如下:
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;JS在setTimeout或Ajax回调中打开新标签页失败怎么处理
2026-11-05 15:50:12
JS直播协议选型:HLS、FLV与WebRTC的延迟与兼容性对比
2026-11-05 12:16:14
JS实现回到顶部:scrollTop赋值与浏览器兼容性处理
2026-11-04 23:43:35
JS使用classList动态添加、移除和切换CSS类名
2026-11-04 23:40:58
在 D3.js 中实现平滑过渡动画的技巧
2026-11-03 23:46:09
