成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript DOM實(shí)戰(zhàn):創(chuàng)建和克隆元素

開(kāi)發(fā) 前端
理論上上說(shuō),通過(guò)JavaScript DOM,你可以從樹(shù)中移除所有的元素,創(chuàng)建新元素,或者重整文檔樹(shù),從而完全改變頁(yè)面,但這個(gè)特性用起來(lái)有些限制,文章將介紹使用JavaScript DOM來(lái)創(chuàng)建和克隆元素。

DOM允許你創(chuàng)建自己的元素和文本節(jié)點(diǎn),并把它們添加大文檔樹(shù)中。理論上上說(shuō),你可以從樹(shù)中移除所有的元素,創(chuàng)建新元素,或者重整文檔樹(shù),從而完全改變頁(yè)面。但是在實(shí)踐中,這個(gè)特性用起來(lái)有些限制。DOM也允許你克隆現(xiàn)有的元素,已便你能方便地復(fù)制文檔的某一部分并在文檔中分發(fā)副本。

51CTO推薦閱讀:JavaScript DOM的本質(zhì)及操作方法

createElement()和createTextNode()

createElement()和createTextNode()做的事情正如它們的名字所說(shuō)的那樣。最常見(jiàn)的JavaScript DOM方法實(shí)戰(zhàn)-修改文檔樹(shù)中已經(jīng)用過(guò)它們。當(dāng)時(shí)的目的是把新創(chuàng)建的元素添加到文檔樹(shù)里,使它成為某個(gè)元素的***一個(gè)子節(jié)點(diǎn)。

  1. //創(chuàng)建一個(gè)li新元素  
  2. var newChild=document.createElement('li');  
  3. //創(chuàng)建一個(gè)a 新元素  
  4. var newLink=document.createElement('a')  
  5. //創(chuàng)建一個(gè) Text 節(jié)點(diǎn)  
  6. var newText=document.createTextNode('My Wiki');  

newChild指向新創(chuàng)建的<li>元素對(duì)象,newLink指向新創(chuàng)建的<a>元素對(duì)象,而newText指向新創(chuàng)建的文本節(jié)點(diǎn)對(duì)象。這些節(jié)點(diǎn)都還沒(méi)有被插入文檔中。最常見(jiàn)的JavaScript DOM方法實(shí)戰(zhàn)-修改文檔樹(shù)中,用到的appendChild()或insertBefore()將它們附加到文檔樹(shù)中。例如:

  1. var nav=document.getElementById("nav");  
  2. //創(chuàng)建一個(gè)li新元素  
  3. var newChild=document.createElement('li');  
  4. //創(chuàng)建一個(gè)a 新元素  
  5. var newLink=document.createElement('a')  
  6. //創(chuàng)建一個(gè) Text 節(jié)點(diǎn)  
  7. var newText=document.createTextNode('My Wiki');  
  8. //把Text添加到a元素節(jié)點(diǎn)中  
  9. newLink.appendChild(newText);  
  10. //給a元素節(jié)點(diǎn)設(shè)置屬性href和內(nèi)容  
  11. newLink.setAttribute('href',"#");  
  12. //把a(bǔ)元素節(jié)點(diǎn)添加到新的li元素節(jié)點(diǎn)中  
  13. newChild.appendChild(newLink);  
  14. //把新的li元素節(jié)點(diǎn)添加到 ul 元素節(jié)點(diǎn)里  
  15. nav.appendChild(newChild);  

這先將文本節(jié)點(diǎn)附加到<a>中,然后再將包含文本節(jié)點(diǎn)的<a>附加到<li>中,***把包含<a>和文本的<li>附加到<ul>中。此時(shí)我的導(dǎo)航條ul中多了一個(gè)li子節(jié)點(diǎn)。

createTextNode()和HTML實(shí)體

createTextNode()有一個(gè)問(wèn)題:它不能創(chuàng)建類(lèi)似于&euro;(€ 歐元符號(hào))&yen;(¥ 人民幣符號(hào)) © (&copy; 版權(quán)符號(hào))&#8220;(“左雙引號(hào))&#8221;(” 右雙引號(hào))等,這樣的HTML實(shí)體元素。它會(huì)按字面創(chuàng)建文本,而不是創(chuàng)建你所需要的符號(hào) 。

  1. <script  type="text/javascript"> 
  2. window.onload=function(){  
  3.  var x=document.createTextNode("&copy; Copyrights reserved");  
  4.  document.getElementById("test").appendChild(x);  
  5. }  
  6. </script>  

不過(guò),我們可以使用innerHTML來(lái)代替:

  1. <script  type="text/javascript"> 
  2. window.onload=function(){   
  3. document.getElementById("test").innerHTML="&copy; 
  4. Copyrights reserved";  
  5. }  
  6. </script>  

關(guān)于innerHTML屬性的用法,我們會(huì)在下一節(jié)中作為專(zhuān)題來(lái)具體的討論。

cloneNode()

cloneNode()方法克隆一個(gè)節(jié)點(diǎn),即它能對(duì)節(jié)點(diǎn)做一個(gè)***的復(fù)制,使你可以在隨后將其插入到文檔樹(shù)中。導(dǎo)航條HTML代碼:

  1. <div id="menu"> 
  2.     <h1>我的導(dǎo)航條</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>  

測(cè)試cloneNode()

  1. <script  type="text/javascript"> 
  2. window.onload=function(){  
  3.      var nav_list=[];  
  4.   var nav=document.getElementById("nav");  
  5.      navnav_list=nav.getElementsByTagName("li");  
  6.   var x=nav_list[0];  
  7.   var y=x.cloneNode(true);  
  8.   nav.appendChild(y);  
  9. }  
  10. </script> 

要想正確的使用cloneNode(),你必須了解它的一下二個(gè)特征:

1. cloneNode()接受一個(gè)可選值為true或false的參數(shù)。True 表示克隆元素和它的所有子節(jié)點(diǎn)。False表示克隆元素但不包含它的子節(jié)點(diǎn)。通常,我們?cè)趯?shí)踐中用true,我從來(lái)沒(méi)有遇到過(guò)想要克隆一個(gè)節(jié)點(diǎn)但不包含它的子節(jié)點(diǎn)的情形。

2. cloneNode()不會(huì)克隆事件處理程序。這相當(dāng)?shù)淖屓藧阑穑恢肋@個(gè)方法是怎么定義的(原因我也不知道)所以每次你克隆一個(gè)節(jié)點(diǎn),你不得不在克隆上重新定義事件處理程序。

原文地址:http://cssrainbow.cn/tutorials/javascript/589.html

【編輯推薦】

  1. 大話(huà)HTML DOM與XML DOM的區(qū)別與聯(lián)系
  2. XML DOM新手入門(mén)指南
  3. JavaScript DOM的本質(zhì)及操作方法 
責(zé)任編輯:王曉東 來(lái)源: cssrainbow
相關(guān)推薦

2010-09-13 14:24:17

JavaScript

2010-09-28 13:40:52

DOM元素

2010-09-13 16:46:29

JavaScriptHTML DOM節(jié)點(diǎn)

2024-01-17 08:00:56

LVM磁盤(pán)Linux

2010-01-25 11:28:59

2010-09-28 14:12:50

Javascript

2010-09-08 17:26:46

JavaScript

2010-09-13 17:12:55

JavaScript

2021-03-18 10:45:02

JavaScript數(shù)組運(yùn)算符

2021-11-09 07:59:50

開(kāi)發(fā)

2010-07-05 11:14:32

2010-08-05 13:23:05

NFS協(xié)議

2021-06-03 10:00:47

JavaScript 前端數(shù)克隆對(duì)象

2012-01-13 12:57:48

Java

2010-08-02 17:24:25

NFS目錄

2009-09-28 15:50:53

Hibernate創(chuàng)建持久化Product

2017-07-19 14:26:01

前端JavaScriptDOM

2010-09-10 16:21:58

JavaScript

2021-04-09 18:01:03

前端ReactDOM

2014-05-26 16:29:12

Shadow DomWeb Compone
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产日韩欧美 | 色爱区综合| 国产精品国产成人国产三级 | 精品久久精品 | 欧美一级久久 | 在线观看av不卡 | 午夜精品一区 | 一级做受毛片免费大片 | 亚洲一页 | 欧美一区二区成人 | 国产一区不卡 | 欧美不卡一区二区 | av国产精品 | 欧美一区二区小视频 | 91久久精品一区二区二区 | 欧美一级片在线看 | 国产激情视频在线 | 成年人在线播放 | 欧美一区永久视频免费观看 | 中文字幕一区二区三区精彩视频 | 成人国产免费视频 | 国产精品久久久久久久久久久久久 | 黄色毛片免费看 | 欧美专区日韩 | 超碰成人av | 午夜欧美 | 中文字幕一区二区视频 | www久久久 | 亚洲人成在线观看 | av永久 | 中文字幕一区二区三区不卡在线 | 国产日韩欧美中文 | 欧美精品久久久久 | 午夜寂寞福利视频 | 日韩精品免费一区二区在线观看 | 69热视频在线观看 | 成人1区2区 | 区一区二区三在线观看 | 久久大 | 中文一区| 国产精品综合色区在线观看 |