龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

JavaScript DOM修改文档树方法实例(1)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
在我们工作中大多数DOM脚本的主要任务就是在DOM文档中插入,删除和移动节点。W3C DOM 提供了4种方法来修改文档树。常用的是appendChild()和insertBefore(),而removeChild() 和replaceChild()很少用到

在我们工作中大多数DOM脚本的主要任务就是在DOM文档中插入,删除和移动节点。W3C DOM 提供了4种方法来修改文档树。常用的是appendChild()和insertBefore(),而removeChild() 和replaceChild()很少用到。

一般用法

修改文档提供的4个方法,都是指向它们所作用的节点的引用。导航条实例:

  1. <div id="menu"> 
  2.     <h1>我的导航条</h1>            
  3.     <ul id="nav"> 
  4.        <li><a href="#">HOME</a></li> 
  5.        <li><a href="#">(X)Html / Css</a></li> 
  6.        <li><a href="#">Ajax / RIA</a></li> 
  7.        <li><a href="#">GoF</a></li> 
  8.        <li><a href="#">JavaScript</a></li> 
  9.        <li><a href="#">JavaWeb</a></li> 
  10.        <li><a href="#">jQuery</a></li> 
  11.        <li><a href="#">MooTools</a></li> 
  12.        <li><a href="#">Python</a></li> 
  13.        <li><a href="#">Resources</a></li> 
  14.     </ul> 
  15. </div>  

appendChild()

appendChild()方法让你添加一个节点并使其成为某个元素的最后一个子节点。如果添加的该节点已经存在于文档中,它会从当前位置移除。该节点的子节点保持不变,它们也被一起移动到新的位置。

  1. <script type="text/javascript"> 
  2. window.onload=function(){  
  3.   /*为一个元素添加子元素*/  
  4.   var nav=document.getElementById("nav");  
  5.   //创建一个li新元素  
  6.   var newChild=document.createElement('li');  
  7.   //创建一个a 新元素  
  8.   var newLink=document.createElement('a')  
  9.   //创建一个 Text 节点  
  10.   var newText=document.createTextNode('My Wiki');  
  11.   //把Text添加到a元素节点中  
  12.   newLink.appendChild(newText);  
  13.   //给a元素节点设置属性href和内容  
  14.   newLink.setAttribute('href',"#");  
  15.   //把a元素节点添加到新的li元素节点中  
  16.   newChild.appendChild(newLink);  
  17.   //把新的li元素节点添加到 ul 元素节点里  
  18.   nav.appendChild(newChild);  
  19.    
  20.   /*<li>从原始位置上被移除,成为ul的最后一个子节点。它的a 元素节点和文本节点HODE也被移了过来*/  
  21.   navnav_list=nav.getElementsByTagName("li");//返回相同的一组元素  
  22.   nav.appendChild(nav_list[0]);  
  23. }  
  24. </script>  

创建新DOM元素的通用函数

  1. <script type="text/javascript"> 
  2. function create( elem ) {  
  3.     return document.createElementNS ?  
  4.         document.createElementNS( 'http://www.w3.org/1999/xhtml', elem ) :  
  5.         document.createElement( elem );  
  6. }  
  7.    
  8. </script>  

我们看到结果:

添加好的子节点

从原始位置上被移除,成为ul的最后一个子节点

insertBefore()

insertBefore()方法允许你在其他节点的前面插入一个节点,所以当你想要添加一个子节点,但又不希望该节点成为最后一个子节点的时候,就可以使用此方法。就像appendChild()方法一样,如果插入的节点已经存在于文档之中,它会被从当前位置移除,而且该节点在被插入之后乃保持它的子节点结构。

  1. <script type="text/javascript"> 
  2. window.onload=function(){  
  3.   var nav=document.getElementById("nav");  
  4.   navnav_list=nav.getElementsByTagName("li");//返回相同的一组元素  
  5.   //第一个节点  
  6.   var x=nav_list[0];  
  7.   //最后一个节点  
  8.   var y=nav_list[nav_list.length-1]  
  9.   //在x元素对象之前插入y元素对象  
  10.   nav.insertBefore(y,x);  
  11.   //在x元素对象之前插入新生产的newChild元素对象  
  12.   nav.insertBefore(newChild,x);//newChild元素对象的创建请参考上面的代码  
  13. }  
  14. </script>  

精彩图集

赞助商链接