javascript加强(2)

本文详细介绍了如何使用DOM操作来实现对网页元素的增删改查,包括元素节点、属性节点及文本节点的操作方法,并演示了如何利用JavaScript进行节点的创建、插入、替换、删除等常见任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、元素节点

  1. //测试元素节点,输出节点名称,节点的类型,节点的值
  2. varliElements=document.getElementsByTagName("li");
  3. for(vari=0;i<liElements.length;i++){
  4. alert(liElements[i].nodeName);
  5. alert(liElements[i].nodeType);
  6. alert(liElements[i].nodeValue);
  7. }
//测试元素节点,输出节点名称,节点的类型,节点的值
  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);
  }


二、属性节点

  1. //测试属性节点,输出属性节点名称,节点的类型,节点的值
  2. varliElements=document.getElementsByTagName("li");
  3. for(vari=0;i<liElements.length;i++){
  4. varattrElement=liElements[i].getAttributeNode("value")
  5. alert("attrElement.nodeName"+attrElement.nodeName);
  6. alert("attrElement.nodeType"+attrElement.nodeType);
  7. alert("attrElement.nodeValue"+liElements[i].getAttribute("value"));
  8. }
//测试属性节点,输出属性节点名称,节点的类型,节点的值
  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"));
  }


三、文本节点

  1. //测试元素节点,输出节点名称,节点的类型,节点的值
  2. varliElements=document.getElementsByTagName("li");
  3. for(vari=0;i<liElements.length;i++){
  4. alert(liElements[i].childNodes[0].nodeName);
  5. alert(liElements[i].childNodes[0].nodeType);
  6. alert(liElements[i].childNodes[0].nodeValue);
  7. liElements[i].childNodes[0].nodeValue="南京";
  8. alert(liElements[i].childNodes[0].nodeValue);
  9. //另一种读取方法
  10. alert(liElements[i].firstChild.nodeName);
  11. alert(liElements[i].firstChild.nodeType);
  12. alert(liElements[i].firstChild.nodeValue);
  13. }
 //测试元素节点,输出节点名称,节点的类型,节点的值
  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);
返回值是一个指向已被替换的那个子节点的引用指针。
如果被插入的子节点还有子节点,则那些子节点也被插入到目标节点中


  1. //方法一
  2. //varcityElement=document.getElementById("city");
  3. //varloveElement=document.getElementById("love");
  4. //varcityChildElement=document.getElementById("beijing");
  5. //varloveChildElement=document.getElementById("fankong");
  6. //varoldElement=cityElement.replaceChild(loveChildElement,cityChildElement);
  7. //loveElement.appendChild(oldElement);
  8. //alert(oldElement.getAttribute("id"));
  9. varcityElement=document.getElementById("city");
  10. cityElement.onclick=function(){
  11. varcityChildElement=document.getElementById("beijing");
  12. varloveChildElement=document.getElementById("fankong");
  13. varoldElement=cityElement.replaceChild(loveChildElement,cityChildElement);
  14. loveElement.appendChild(oldElement);
  15. alert(oldElement.getAttribute("id"));
  16. }
 //方法一
//  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() 配合使用
新节点可以被追加给文档中的任何一个元素

  1. varnewliElement=document.createElement("li");
  2. vartextNode=document.createTextNode("北京");
  3. newliElement.appendChild(textNode);
  4. document.body.appendChild(newliElement);
  5. varliElement=document.getElementsByTagName("li");
  6. vartextValue=liElement[0].firstChild.nodeValue;
  7. alert(textValue);
 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()方法删除时,这个节点所包含的所有子节点将同时被删除。

  1. <ulid="city"><livalue="beijing^"id="beijing">北京</li></ul>
  2. varulElement=document.getElementById("city");
  3. varliElement=document.getElementById("beijing");
  4. ulElement.removeChild(liElement);
 <ul id="city">  <li value="beijing^" id="beijing">北京</li> </ul>
 var ulElement=document.getElementById("city");
 var liElement=document.getElementById("beijing");
 ulElement.removeChild(liElement);



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

  1. <ulid="city"><livalue="beijing^"id="beijing">北京</li></ul>
  2. varliElement=document.getElementById("beijing");
  3. varparentElement=liElement.parentNode;
  4. parentElement.removeChild(liElement);
 <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属性

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

  1. <divid="city"></div>
  2. vardivElement=document.getElementById("city");
  3. divElement.innerHTML="<livalue='beijing^''id='beijing'>北京</li>";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值