網誌分頁

複製DOM節點的JavaScript函式

在重度寫JavaScript的程式設計師,可能都了解的這個函數

cloneNode()

當你有個DOM,像一個表格TABLE或是選擇項SELECT,如果不用innerHTML的方式複製,clondeNode是個很好的JavaScript選擇直接複製DOM

?View Code JAVASCRIPT
1
2
3
4
5
6
	myDivObj=document.createElement('div');//先製造一個DIV
	document.getElementsByTagName('body')[0].appendChild(myDivObj);//把製造的DIV放進BODY標籤裡面
	myDivObj.innerHTML='DOM 天字一號';//填寫DIV的內容
	cloneMyDivObj=myDivObj.cloneNode(true);//複製一份新的DIV
	document.getElementsByTagName('body')[0].appendChild(cloneMyDivObj);//把新複製的DIV塞進BODY標籤裡面
	cloneMyDivObj.innerHTML+='的複製品';//更改複製的DIV的內容

在myDivObj.cloneNode(true)裡面的true代表是要把DOM的子節點通通一併一起複製至新的DOM裡面,反之false代表不要複製相關的子節點

資料來源…

順便一提,這個函式我在IE6測試無誤,既然資料來源是Firefox的官網,相信於FF也會是沒問題的。

Related posts:

  1. 動態下載JavaScript 節省下載時間 (Load JS on Demand) 在寫大型系統的時候,javascript會越寫越多,越寫越長,越寫越臭,然而也會佔掉頁面的下載速度,gmail在下載前面都會出現的下載圖示也是因應這個原因,不要讓使用者覺得你的程式凍住了。 這是上班遇到的問題,寫了一個大型的ajax系統已經費時一年了,當每次重新刷頁面的時候會重新下載三十幾個js檔案,使得系統處理到下載時間會到二十秒左右,雖然學了gmail放了下載進度圖示,但是這個問題已經被老闆和同事詬病了很久了。 先簡單解釋作品的架構,和為什麼會有這個問題: 該作品是匯集了三十幾個模組,每個模組的功能都不太一樣,輸入的功能也不太一樣,然而在同一個頁面,用TABS/AJAX的方式讓使用者可以在不換頁的情況下自由瀏覽不同的模組。每個模組都有至少上千行的JavaScript程式碼,因此以傳統的方式,都會崁入下列程式碼於HTML中。 <script src="../temaplateName/myJs.js"></script> 這一行標籤崁入HTML頁面,沒問題,大不了只是崁入了幾千行JS,對再爛的網路頻寬,也費不了甚麼時間。但是如果有三十幾個這個標籤,不就是強迫一次下載三萬多行的程式碼,這就需要一點時間下載了,而該作品在網芳內經過測試就費時十七秒至十八秒。 今天想到一個方法可以Load JS on...
  2. 回最上方 常常會看到攏長的網頁會放個”回最上方”,但是都是按一下就跳到最上面,以下是小弟做的回到最上方,但是會以比較順滑的方式滑上去。 scrollToTop=new Object(); scrollToTop.scrollTop=null; scrollToTop.scrollLeft=null; scrollToTop.action=function(){ if(scrollToTop.scrollTop==null){ var pageY =...

Related posts brought to you by Yet Another Related Posts Plugin.

4 comments to 複製DOM節點的JavaScript函式

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>