JavaScript DOM节点操作详解:增删改查与遍历

作者:页面旅途时间:2026-10-27 09:16:32浏览:98

本文详细解析JavaScript中DOM节点的核心操作方法,涵盖元素、属性及文本节点的创建、替换、插入与删除。通过appendChild、replaceChild、removeChild等API实现节点动态管理,并介绍childNodes、firstChild等遍历属性及非标准的innerHTML读写方式,帮助开发者掌握前端页面结构动态修改的关键技术。

元素节点与属性节点的基本操作

一、元素节点

代码如下:

//测试元素节点,输出节点名称,节点的类型,节点的值
var liElements=document.getElementsByTagName("li");
for(var i=0;i<liElements.length;i++){
alert(liElements[i].nodeName);
alert(liElements[i].nodeType);
alert(liElements[i].nodeValue);
  }

二、属性节点

代码如下:

//测试属性节点,输出属性节点名称,节点的类型,节点的值
var liElements=document.getElementsByTagName("li");
for(var i=0;i<liElements.length;i++){
var attrElement=liElements[i].getAttributeNode("value")
alert("attrElement.nodeName "+attrElement.nodeName);
alert("attrElement.nodeType "+attrElement.nodeType);
alert("attrElement.nodeValue "+liElements[i].getAttribute("value"));
}
文本节点的读取与修改三、文本节点
 //测试元素节点,输出节点名称,节点的类型,节点的值
 var liElements=document.getElementsByTagName("li");
 for(var i=0;i<liElements.length;i++){
 alert(liElements[i].childNodes[0].nodeName);
 alert(liElements[i].childNodes[0].nodeType);
 alert(liElements[i].childNodes[0].nodeValue);
liElements[i].childNodes[0].nodeValue="南京";
 alert(liElements[i].childNodes[0].nodeValue);
 //另一种读取方法
 alert(liElements[i].firstChild.nodeName);
 alert(liElements[i].firstChild.nodeType);
 alert(liElements[i].firstChild.nodeValue);
 }

节点替换与属性查找设置

四、替换节点

replaceChild() 把一个给定父元素里的一个子节点替换为另外一个子节点 var reference = element.replaceChild(newChild,oldChild); 返回值是一个指向已被替换的那个子节点的引用指针。 如果被插入的子节点还有子节点,则那些子节点也被插入到目标节点中

代码如下:

//方法一
// var cityElement=document.getElementById("city");
// var loveElement=document.getElementById("love");
// var cityChildElement=document.getElementById("beijing");
// var loveChildElement=document.getElementById("fankong");
// var oldElement=cityElement.replaceChild(loveChildElement,cityChildElement);
// loveElement.appendChild(oldElement);
// alert(oldElement.getAttribute("id"));
var cityElement=document.getElementById("city");
 cityElement.onclick=function(){
 var cityChildElement=document.getElementById("beijing");
 var loveChildElement=document.getElementById("fankong");
 var oldElement=cityElement.replaceChild(loveChildElement,cityChildElement);
 loveElement.appendChild(oldElement);
 alert(oldElement.getAttribute("id"));
 }

五、查找属性节点

getAttribute() 返回一个给定元素的一个给定属性节点的值 var attributeValue = element.getAttribute(attributeName); 给定属性的名字必须以字符串的形式传递给该方法。 给定属性的值将以字符串的形式返回,如果给定属性不存在,getAttribute() 将返回一个空字符串. 通过属性获取属性节点 getAttributeNode(属性的名称)--Node

<li name="beijing" id="bj">北京</li> //通过属性名获取属性的值 var bjElement=document.getElementById("bj"); var attributeValue=eduElement.getAttribute("name"); alert("attributeValue "+attributeValue); //通过属性名获取属性的节点 var bjNode=eduElement.getAttributeNode("name"); alert(eduNode.nodeValue); alert(eduNode.nodeType); alert(eduNode.nodeName);

六、设置属性节点

setAttribute() 将给定元素节点添加一个新的属性值或改变它的现有属性的值。 element.setAttribute(attributeName,attributeValue); 属性的名字和值必须以字符串的形式传递给此方法 如果这个属性已经存在,它的值将被刷新; 如果不存在,setAttribute()方法将先创建它再为其赋值。

<li id="bj" >北京</li>

//获取元素的引用 var bjElement=document.getElementById("bj"); //设置属性值 bjElement.setAttribute("name","beijing"); //获取设置的属性值 var nameValue=bjElement.getAttribute("name"); alert("nameValue "+nameValue);

 

新元素与文本节点的创建

七、创建新元素节点

createElement() 按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,是一个字符串. var reference = document.createElement(element); 方法的返回值:是一个指向新建节点的引用指针。返回值是一个元素节点,所以它的 nodeType 属性值等于 1。 新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性,它只是一个存在于 JavaScript 上下文的对象. var pElement = document.createElement("p");

//创建一个新的元素 var pElement=document.createElement("li"); //设置属性值 pElement.setAttribute("id","pid"); //获取父元素 var loveElement=document.getElementById("love"); //在父元素中增加子元素 loveElement.appendChild(pElement);

//通过id获取刚创建的元素 var pidElement=document.getElementById("pid"); alert(pidElement.getAttribute("id"));

 

八、创建新文本节点

createTextNode() 创建一个包含着给定文本的新文本节点。这个方法的返回值是一个指向新建文本节点引用指针。 var textNode = document.createTextNode(text); 方法只有一个参数:新建文本节点所包含的文本字符串 方法的返回值:是一个指向新建节点的引用指针。它是一个文本节点,所以它的 nodeType 属性等于 3. 新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性 var pElementText=document.createElement("li"); var textElement=document.createTextNode("南京"); pElementText.appendChild(textElement);

节点的插入与删除

九、插入节点(1)

appendChild() 为给定元素增加一个子节点: var newreference = element.appendChild(newChild). 给定子节点 newChild 将成为给定元素节点 element 的最后一个子节点。 方法的返回值是一个指向新增子节点的引用指针。 该方法通常与 createElement() createTextNode() 配合使用 新节点可以被追加给文档中的任何一个元素

代码如下:

var newliElement=document.createElement("li");
var textNode=document.createTextNode("北京");
newliElement.appendChild(textNode);
document.body.appendChild(newliElement);
var liElement=document.getElementsByTagName("li");
var textValue=liElement[0].firstChild.nodeValue;
alert(textValue);

十、删除节点

removeChild() 从一个给定元素里删除一个子节点 var reference = element.removeChild(node); 返回值是一个指向已被删除的子节点的引用指针。 某个节点被removeChild()方法删除时,这个节点所包含的所有子节点将同时被删除。

代码如下:

<ul id="city"> <li value="beijing^" id="beijing">北京</li> </ul>
var ulElement=document.getElementById("city");
var liElement=document.getElementById("beijing");
ulElement.removeChild(liElement);

如果想删除某个节点,但不知道它的父节点是哪一个,parentNode 属性可以帮忙。

代码如下:

<ul id="city"> <li value="beijing^" id="beijing">北京</li> </ul>
var liElement=document.getElementById("beijing");
var parentElement=liElement.parentNode;
parentElement.removeChild(liElement);

节点树的遍历与兄弟节点访问

十一、遍历节点树

ChildNodes:返回一个数组,这个数组由给定元素节点的子节点构成: var nodeList = node.childNodes; 文本节点和属性节点都不可能再包含任何子节点,所以它们的 ChildNodes 属性永远会返回一个空数组。 如果想知道某个元素有没有子节点,可以用 hasChildNodes 方法。 如果想知道某个元素有多少个子节点,可以用 childNodes 数组的 length 属性。 childNodes 属性是一个只读属性。

十二、获取第一个子节点

firstChild:该属性返回一个给定元素节点的第一个子节点,返回这个节点对象的指针。 var reference = node.firstChild; 文本节点和属性节点都不可能包含任何子节点,所以它们的 firstChild 属性永远会返回 null。 某个元素的 firstChild 属性等价于这个元素的 childNodes 节点集合中的第一个节点,即: var reference = node.ChildNodes[0]; firstChild 属性是一个只读属性。

十三、获取最后一个子节点

lastChild:对应 firstChild 的一个属性。 nextSibling: 返回一个给定节点的下一个兄弟节点。 parentNode:返回一个给定节点的父节点。 parentNode 属性返回的节点永远是一个元素节点,因为只有元素节点才有可能包含子节点。 document 节点的没有父节点。 previousSibling:返回一个给定节点的上一个兄弟节点

innerHTML属性的读写应用

十四、innerHTML属性

浏览器几乎都支持该属性,但不是 DOM 标准的组成部分。 innerHTML 属性可以用来读,写某给定元素里的 HTML 内容。

代码如下:

<div id="city"></div>
var divElement=document.getElementById("city");
divElement.innerHTML="<li value='beijing^'' id='beijing'>北京</li>";
作者最新文章