国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JavaScript DOM修改文檔樹方法實例

開發 前端
文章提供了四種JavaScript DOM修改文檔書的實例,常用的是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>  

 #p#

在其他節點的前面插入一個節點

replaceChild()

replaceChild()方法允許你把一個節點替換為另一個節點。就像appendChild()和insertBefore()一樣,如果插入的節點已經存在于文檔之中,它會被從當前位置移除,而且該節點在被插入之后乃保持它的子節點結構。

  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.   //x節點對象被newChild新節點對象替換了  
  8.   nav.replaceChild(newChild,x);  
  9. }  
  10. </script>  

把一個節點替換為另一個節點

removeChild()

removeChild()方法允許你移除一個節點以及它的子節點們。

  1. <script type="text/javascript"> 
  2. window.onload=function(){  
  3.   var nav=document.getElementById("nav");  
  4.   navnav_list=nav.getElementsByTagName("li");//返回相同的一組元素  
  5.   //***一個節點  
  6.   var y=nav_list[nav_list.length-1]  
  7.   //移除***面的一個節點  
  8.   nav.removeChild(y);  
  9. }  
  10. </script>  

你移除一個節點以及它的子節點們

移除所有的子節點

有的時候你需要把一個元素清除干凈;你想在添加新節點前清除原來的所有子點。有兩個簡單的方法來做這件事情:

  1. <script type="text/javascript"> 
  2.  while (x.childNodes[0]){  
  3.   x.removeChild(x.childNodes[0]);  
  4.  }  
  5.    
  6.  /*  
  7.  //我們可以使用firstChild來代替childNodes[0]  
  8.   while (x.firstChild){  
  9.   x.removeChild(x.firstChild);  
  10.  }  
  11.  * /  
  12. </script>  

這是一個簡單的while()循環,只要元素存在***個節點(childNodes[0]),它就移除這個節點,接著節點集合立即更新。所以(原來的)第二個節點成為了***個節點,循環就會一直重復,直到X沒有子節點為止。另一個方法就簡單了

  1. <script type="text/javascript"> 
  2. x.innerHTML='';  
  3. </script>  

 #p#

輔助函數

appendChild()和insertBefore()都有2個參數,但是我們在應用的時候,還要注意參數的先后順序。既然這么麻煩我們還是自己寫一些輔助函數來代替原有的appendChild()和insertBefore()。在另一個元素之前插入元素的函數:

  1. <script type="text/javascript"> 
  2. //insertBefore()的代替方法  
  3. function before( parent, before, elem ) {  
  4.     // Check to see if no parent node was provided  
  5.  //檢查parent是否傳入  
  6.     if ( elem == null ) {  
  7.         elem = before;  
  8.         before = parent;  
  9.         parent  = before.parentNode;  
  10.     }  
  11.    
  12.     // Get the new array of elements  
  13.  //獲取元素的新數組  
  14.     var elems = checkElem( elem );  
  15.    
  16.     // Move through the array backwards,  
  17.     // because we’re prepending elements  
  18.  //向后遍歷數組  
  19.  //因為我們向前插入元素  
  20.     for ( var i = elems.length - 1; i >= 0; i-- ) {  
  21.         parent.insertBefore( elems[i], before );  
  22.     }  
  23. }  
  24. </script>  

為另一個元素添加一個子元素:

  1. <script type="text/javascript"> 
  2. //appendChild()的代替方法  
  3. function append( parent, elem ) {  
  4.     // Get the array of elements  
  5.  //獲取元素數組  
  6.     var elems = checkElem( elem );  
  7.    
  8.     // Append them all to the element  
  9.  //把它們所有都追加到元素中  
  10.     for ( var i = 0; i <= elems.length; i++ ) {  
  11.         parent.appendChild( elems[i] );  
  12.     }  
  13. }  
  14. </script>  

before和append的輔助函數:

  1. <script type="text/javascript"> 
  2. function checkElem( elem ) {  
  3.     // If only a string was provided, convert it into a Text Node  
  4.  //如果只提供字符串,那就把它轉換為文本節點  
  5.     return elem && elem.constructor == String ?  
  6.    document.createTextNode( elem ) : elem;  
  7. }  
  8. </script>  

注意:constructor的用法。

有時你可能需要對變量進行類型檢查,或者判斷變量是否已定義。有兩種方法可以使用:typeof函數與constructor屬性。typeof可以檢查到變量是否有定義,而construct只能檢查已定義變量的類型。

移除所有的子節點的輔助函數:

  1.  <script type="text/javascript"> 
  2. function empty( elem ) {   
  3.  while (elem.firstChild){  
  4.    remove(elem.firstChild);  
  5.  }  
  6.  /*  
  7.  //我們可以使用firstChild來代替childNodes[0]  
  8.  while (elem.childNodes[0])  
  9.   remove(elem.childNodes[0]);  
  10.  * /  
  11. }  
  12.    
  13. function remove( elem ) {  
  14.     if ( elem ) elem.parentNode.removeChild( elem );  
  15. }  
  16. </script> 

 

【編輯推薦】

  1. JavaScript DOM實戰:創建和克隆元素
  2. XML DOM新手入門指南
  3. 在JavaScript中如何實現DOM操作 
責任編輯:王曉東 來源: cssrainbow
相關推薦

2010-09-13 14:24:17

JavaScript

2010-09-13 17:12:55

JavaScript

2010-09-09 13:55:47

XML DOM

2010-09-28 14:35:34

DOM遍歷

2021-09-09 10:26:26

Javascript 文檔對象前端

2010-09-08 15:47:08

JavsScriptJavaScript

2010-09-08 17:26:46

JavaScript

2010-09-28 14:12:50

Javascript

2010-09-28 10:03:15

DOM文檔對象模型

2012-04-26 08:29:22

DOM

2010-09-28 13:24:34

DOM文檔對象模型

2010-09-28 09:43:37

DOM文檔對象模型

2025-07-03 02:15:00

DOM對象模型JavaScript

2010-09-28 11:22:18

Html DOM樹

2010-09-28 11:03:19

XML DOM

2017-07-19 14:26:01

前端JavaScriptDOM

2010-09-10 16:21:58

JavaScript

2019-12-11 09:23:51

JavaScriptHTMLXML

2010-09-15 14:40:07

HTMLposition屬性

2025-02-08 09:02:09

點贊
收藏

51CTO技術棧公眾號

www视频在线看| 国产精品视频一| 91av在线影院| 国产在线激情视频| 国产日本亚洲高清| 久久久久一区二区| 中文字幕乱码亚洲无线精品一区 | 性网站在线免费观看| 国产乱妇无码大片在线观看| 欧美一区二区三区电影在线观看| 国产日本亚洲| 亚洲国产精品久久久久| 中文字幕超清在线免费观看| 欧美日韩精选| 国产精品爽爽爽| 伊人在我在线看导航| 欧美一区二区三区不卡| 熟妇人妻va精品中文字幕| 国产成人亚洲精品狼色在线| 91免费在线观看网站| 欧美激情91| 99re视频| 我要色综合中文字幕| 欧美精品日韩综合在线| 老司机精品视频在线观看6| 欧美一区国产二区| 欧美激情免费| 一区二区在线视频播放| 牛牛精品成人免费视频| 成人福利在线视频| 一区二区免费不卡在线| 日韩欧美亚洲v片| 精品成人影院| 亚洲精品欧洲精品| 91免费视频观看| 国产资源在线免费观看| 日韩欧美国产一区二区在线播放 | 国产在线|日韩| 欧美孕妇与黑人孕交| 日韩欧美综合| 日韩欧美精品一区二区| 国产精品五月天| 三级理论午夜在线观看| 亚洲人成亚洲人成在线观看图片| 国产在线播放观看| 日韩精品视频三区| 麻豆网站在线观看| 亚洲视频一区二区在线| 久久青草福利网站| 1769在线观看| 亚洲免费观看高清完整版在线 | 你懂的在线看| 国产成人精品免费看| 日本成人黄色免费看| 国产一区二区在线电影| 18视频免费网址在线观看| 91成人理论电影| 久久电影网站中文字幕 | 亚洲成在人线在线播放| 日日噜噜夜夜狠狠| 欧美中文字幕亚洲一区二区va在线| 91大神影片| 疯狂蹂躏欧美一区二区精品| 黑人与亚洲人色ⅹvideos| 亚洲欧美制服第一页| 日本1级在线| 国产成人免费精品| 欧美刺激午夜性久久久久久久| 国产二区三区在线| 日本丶国产丶欧美色综合| 佐山爱痴汉视频一区二区三区| 久青草国产97香蕉在线视频| 福利视频网站一区二区三区| 免费福利视频一区二区三区| 少妇一晚三次一区二区三区| 亚洲最大在线视频| 精品成人久久av| 在线观看免费毛片| 欧美一性一乱一交一视频| 国产午夜亚洲精品羞羞网站| 韩日精品一区| 在线免费观看你懂的| 精品国产91久久久久久久妲己| 在线视频超级| 亚洲精品在线观看www| 精品成人18| 最近中文字幕mv在线一区二区三区四区| 另类中文字幕国产精品| 美女啪啪无遮挡免费久久网站| 色天使综合视频| 99热这里只有精品8| ckplayer中文字幕| 神马久久久久久| 国产精品一区二区久久不卡| 欧美1—12sexvideos| 亚洲aⅴ天堂av在线电影软件| 欧美一区二区视频观看视频 | 国产精品久久久久久亚洲伦| 国产精品chinese在线观看| 在线观看av片| 亚洲性生活视频在线观看| 特黄毛片在线观看| 97精品在线视频| 欧美二区视频| 99在线精品免费视频| 成人网页在线免费观看| 久久国产高清| 大肉大捧一进一出好爽动态图| 欧美中文一区二区三区| 桃色av一区二区| 欧美久久一二区| 视频在线在亚洲| 任你躁在线精品免费| 日韩国产欧美亚洲| 亚洲欧美色一区| 欧美97人人模人人爽人人喊视频| 91亚洲精品视频| 国产精品自产自拍| 女人黄色免费在线观看| 国产精选在线观看91| 91福利在线看| 青青草精品视频| 七七久久电影网| 亚洲图片小说在线| 日韩在线观看av| 26uuu久久天堂性欧美| 风间由美性色一区二区三区四区| 九色视频网站入口| 欧美 日韩 国产 高清| av一区二区在线看| 日本欧美精品在线| 日韩网站免费观看高清| 欧美日韩一区二区三区在线看| 国产精品入口66mio| 欧美a级在线| 禁断一区二区三区在线| 秋霞影院一区| 欧美大片网站| 欧美激情二区| 秋霞a级毛片在线看| 欧美激情精品久久久久久小说| 国产精品视频自在线| 97在线免费观看| 精品国产一区二区三区在线观看| 日韩欧美一区二区三区久久| 99精品一区二区| 国产三级精品三级| 久久久影视传媒| 91一区二区在线观看| 久久精品亚洲一区二区三区浴池 | 欧美专区日韩专区| 欧美日韩一区二区免费视频| 欧美亚洲国产一区在线观看网站| 午夜在线成人av| 国产精品成人一区二区艾草| 成人黄色av电影| 激情视频一区| 亚洲国产美女 | 亚洲国产另类久久久精品极度| 人禽交欧美网站免费| 中文字幕一区二区三区有限公司 | 久久国产一区二区| 国产在线观看一区二区三区| 国产精品国模大尺度私拍| 欧美日韩一区二区视频在线| 欧美大片免费播放| 国模吧无码一区二区三区 | 国产一区二区三区的电影| 国产精品日本| 国产精品久久久久久久岛一牛影视| 一级女性全黄久久生活片免费| 精品国产999| 亚洲日本欧美中文幕| 欧美精品亚州精品| 国产精品第3页| 天天做天天躁天天躁| 天堂av在线播放| 中文在线а√天堂| 美女网站色精品尤物极品姐弟| 日韩天天综合| 亚洲美女区一区| 国产一区二区三区毛片| 五月激情六月综合| 亚洲综合福利| 99精品国产在热久久下载| 精品一区二区精品| 一区二区三区高清不卡| 中文字幕欧美国内| 日韩欧美亚洲日产国产| 黑巨人与欧美精品一区| 亚洲网站三级| 午夜亚洲影视| 欧美久久久久久久久久| 亚洲小说欧美另类社区| 亚洲高清资源| 91在线播放网址| 日韩免费观看高清完整版在线观看| 97精品国产97久久久久久免费| 国产日韩在线精品av| 深夜黄色小视频|