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

在JavaScript中如何實現DOM操作

開發 前端
對于JavaScript DOM,首先需要理解的一點是,DOM是針對XML的基于樹的API,它的實現有很多,包括HTML DOM以及XML DOM,而本文主要討論JavaScript DOM的基礎知識。

對于JavaScript DOM,首先需要理解的一點是,DOM是針對XML的基于樹的API,它的實現有很多(各語言基本都有自己的實現),文章將討論的是JavaScript中或者說xhtml(html)對DOM的實現。

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

使用DOM

考慮一個html文件:

  1. <html> 
  2. <head><title>測試</title></head> 
  3. <body> 
  4. <p>測試</p> 
  5. </body> 
  6. </html> 

1.訪問節點

◆訪問html元素:var oHtml=document.documentElement;

◆獲取head元素:var oHead=oHtml.firstChild;

◆獲取body元素:var oBody=oHtml.lastChild; 或者 var oBody=document.body;

也可以通過childNodes來做同樣的工作:

  1. var oHead=oHtml.childNodes[0] 或者 oHtml.childNodes.item(0);  
  2. var oBody=oHtml.childNodes[1] 或者 oHtml.childNodes.item(1); 

判斷節點間關系:

  1. alert(oHead.parentNode==oHtml);    
  2. alert(oBody.previousSibling==oHead);  
  3. alert(oHead.nextSibling==oBody);  
  4. alert(oHead.ownerDocument==document); 

2.檢測節點類型

通過節點的nodeType屬性來檢驗節點類型:

  1. alert(document.nodeType);  //輸出9 

需要注意的是,DOM兼容的瀏覽器(以FF2.0為例),擁有Node.DOCUMENT_NODE、Node.ELEMENT_NODE等常量。各常量名稱與數值對照表如下:

  1. ELEMENT_NODE                                 1  
  2. ATTRIBUTE_NODE                            2  
  3. TEXT_NODE                                         3  
  4. CDATA_SECTION_NODE                 4  
  5. ENTITY_REFERENCE_NODE            5  
  6. ENTITY_NODE                                     6  
  7. PROCESSING_INSTRCTION_NODE       7  
  8. COMMENT_NODE                              8  
  9. DOCUMENT_NODE                            9  
  10. DOCUMENT_TYPE_NODE               10  
  11. DOCUMENT_FRAGMENT_NODE   11  
  12. NOTATION_NODE                              12  
  13.  

IE6不支持,不過你可以自定義一個JavaScript對象Node。

3.處理特性

處理特性可以使用標準的NameNodeMap中的方法:

  1. getNamedItem(name) removeNamedItem(name)  setNamedItem(node)    item(pos) 

比如:<p id="test">測試</p>,假設變量oP是上面的p節點的引用,我們要訪問oP的id屬性:

  1. var sId=oP.attributes.getNamedItem("id").nodeValue; 

這些方法用起來很累贅,所以DOM又定義了三個方法來簡化:

  1. getAttribute(name)         ——返回名稱為name的屬性的值  
  2. setAttribute(name,value)   ——顧名思義  
  3. removeAttribute(name)      ——顧名思義  

上面的例子可以改寫為:

  1. var sId=oP.getAttribute("name"); 

4.訪問指定節點

熟知的getElementByTagName(name),getElementByName(name),getElementById(id)三個方法,不再展開。

#p#

5.創建和操作節點

(1)創建新節點,一張IE(6.0)和FF對DOM Level1的創建新節點方法支持的對照表:

  1. 方法                                                               IE                               FF  
  2. createAttribute(name)                                 Y                                Y  
  3. createCDATASection(text)                        N                                Y  
  4. createComment(text)                                    Y                                Y  
  5. createDocumentFragment()                        Y                                Y  
  6. createElement(tagName)                             Y                                 Y  
  7. createEntityReference(name)                     N                                 Y  
  8. createProcessingInstruction(  
  9. target,data)                                                   N                                  Y  
  10. createTextNode(text)                                  Y                                   Y 

(2)createElement(),createTextNode(),appendChild()

  1. 例子:  
  2. <html> 
  3.     <head> 
  4.         <title>createElement() Example</title> 
  5.         <script type="text/JavaScript"> 
  6.             function createMessage() {  
  7.                 var oP = document.createElement("p");  
  8.                 var oText = document.createTextNode("Hello World!");  
  9.                 oP.appendChild(oText);  
  10.                 document.body.appendChild(oP);  
  11.             }  
  12.         </script> 
  13.     </head> 
  14.     <body onload="createMessage()"> 
  15.     </body> 
  16. </html> 

在頁面載入后,創建節點oP,并創建一個文本節點oText,oText通過appendChild方法附加在oP節點上,為了實際顯示出來,將oP節點通過appendChild方法附加在body節點上。此例子將顯示Hello World!

(3)removeChild(),replaceChild()和insertBefore()

從方法名稱就知道是干什么的:刪除節點,替換節點,插入節點。需要注意的是replaceChild和insertBefore兩個參數都是新節點在前,舊節點在后。

(4)createDocumentFragment()

此方法主要是為了解決大量添加節點時,速度過慢。通過創建一個文檔碎片節點,將要添加的新節點附加在此碎片節點上,然后再將文檔碎片節點append到body上面,替代多次append到body節點。

  1. <html> 
  2.     <head> 
  3.         <title>insertBefore() Example</title> 
  4.         <script type="text/JavaScript"> 
  5.             function addMessages() {  
  6.                 var arrText = ["first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth"];  
  7.                   
  8.                 var oFragment = document.createDocumentFragment();  
  9.                   
  10.                 for (var i=0; i < arrText.length; i++) {  
  11.                     var oP = document.createElement("p");  
  12.                     var oText = document.createTextNode(arrText[i]);  
  13.                     oP.appendChild(oText);  
  14.                     oFragment.appendChild(oP);  
  15.                 }  
  16.                   
  17.                 document.body.appendChild(oFragment);  
  18.  
  19.             }  
  20.         </script> 
  21.     </head> 
  22.     <body onload="addMessages()"> 
  23.  
  24.     </body> 
  25. </html> 

HTML DOM的特征功能

HTML DOM的特性和方法不是標準的DOM實現,是專門針對HTML同時也讓一些DOM操作變的更加簡便。

1.讓特性像屬性一樣

訪問某元素的特性需要用到getAttribute(name)方法,HTML DOM擴展,可以直接使用同樣名稱的屬性來獲取和設置這些值,比如:

  1. <img src="test.jpg"/> 

2.table的系列方法:

為了簡化創建表格,HTML DOM提供了一系列的表格方法,常用幾個:

◆cells  ——返回</tr>元素中的所有單元格

◆rows   ——表格中所有行的集合

◆insertRow(position) ——在rows集合中指定位置插入新行

◆deleteRow(position) ——與insertRow相反

◆insertCell(position) ——在cells集合的指定位置插入一個新的單元格

◆deleteCell(position) ——與insertCell相反

遍歷DOM

DOM的遍歷是DOM Level2中提出的標準,IE6沒有實現,Mozilla和Safari已經實現,最新IE7不清楚是否實現。

【編輯推薦】

  1. JavaScript DOM的本質及操作方法
  2. 詳解JavaScript DOM中的Node節點
  3. 減少瀏覽器重解析 JavaScript DOM操作優化方案 
責任編輯:王曉東 來源: 博客園
相關推薦

2010-09-13 17:12:55

JavaScript

2021-04-09 18:01:03

前端ReactDOM

2016-04-06 11:29:58

JavaScriptDOM操作

2017-07-19 14:26:01

前端JavaScriptDOM

2010-09-28 15:12:27

Javascript

2010-09-28 14:52:57

JavaScriptDOM

2009-06-18 12:21:07

javascriptdom

2010-09-08 15:47:08

JavsScriptJavaScript

2010-09-28 15:07:48

JavaScript

2010-09-28 12:59:45

JavaScriptDOM

2021-06-03 10:00:47

JavaScript 前端數克隆對象

2010-08-17 15:04:37

JavaScriptDOM ready

2010-06-07 16:55:00

JavaScript

2010-09-08 15:13:09

Node節點Node屬性

2009-03-13 13:58:10

Javascript哈希表偽哈希表

2009-04-09 15:40:01

JSONJavaScript枚舉

2009-06-23 14:22:00

DOM文檔XML文件Java

2021-04-07 06:00:18

JavaScript 前端并發控制

2019-12-25 15:41:50

JavaScript程序員編程語言

2010-09-28 14:12:50

Javascript
點贊
收藏

51CTO技術棧公眾號

成人午夜视频免费在线观看| 特级毛片在线免费观看| 第一av在线| 欧美日韩在线第一页| av天堂永久资源网| 欧美精品偷拍| 国产精品mp4| 欧美aaa大片视频一二区| 欧美影片第一页| 国产女优裸体网站| 日本一区二区三区国色天香| 久久综合狠狠综合久久综青草| 成人一级毛片| 国产中文字幕日韩| 国产欧美日韩在线观看视频| 欧美日本视频在线| av手机天堂| 成人精品一区二区三区四区| 国产精品久久久久久久久婷婷 | 影音先锋久久资源网| xxav国产精品美女主播| av在线免费网站| 午夜亚洲福利老司机| 凹凸日日摸日日碰夜夜爽1| 黄页视频在线91| 欧美日韩中文字幕| 黄色www在线观看| 亚洲综合激情| 91丨九色丨国产| 偷拍自拍亚洲色图| 久久久久久久国产精品视频| 伊人久久综合一区二区| 欧美精品一区二区三区视频| 麻豆网站在线看| 在线视频一区二区免费| 日本韩国一区| 色哟哟一区二区在线观看| 夜鲁很鲁在线视频| 日韩欧美中文字幕在线播放| 天天在线女人的天堂视频| 亚洲午夜电影在线观看| 九色网友自拍视频手机在线| 欧美特级www| 国产免费av在线| 3d动漫精品啪啪| 美女av在线免费看| 日韩中文字幕av| 91国拍精品国产粉嫩亚洲一区| 亚洲精品97久久| 久久亚洲精品人成综合网| 中文字幕亚洲欧美一区二区三区 | 久久久加勒比| 97色伦亚洲国产| 欧美激情欧美| 97av中文字幕| 一级做a爱片久久| 国产九九在线| 亚洲福利影片在线| 校花撩起jk露出白色内裤国产精品 | 视频一区视频二区国产精品| 国产精品高清一区二区| 国产日本欧美一区| 久久99精品久久久| 欧美黑人又粗又大又爽免费| 欧美三级三级三级爽爽爽| 亚洲免费一区| 国产在线精品一区二区中文| 成人性视频免费网站| 在线播放你懂的| 亚洲国产成人精品女人久久久| 妖精一区二区三区精品视频 | 天天色天天操综合| 性欧美hd调教| 亚洲一区国产精品| 一区免费观看视频| 视频二区不卡| 97se亚洲综合在线| 亚洲日本va在线观看| 午夜欧美巨大性欧美巨大| 福利精品视频| 欧美日韩黄色大片| 亚洲图片久久| 成视人a免费观看视频| 久久精品电影网站| 精品综合久久久久久8888| 日本中文字幕电影在线观看| 韩国美女主播一区| 91色|porny| 午夜日韩影院| 麻豆av免费在线| 久久香蕉国产线看观看网| 国产精品1区二区.| 日韩电影网站| 国产四区在线观看| 日韩激情av在线播放| 久久精品免费看| 国产高清自产拍av在线| 国产精品手机视频| 日韩美女视频在线| 麻豆久久婷婷| 91超碰在线| 青青草综合在线| 久久久久久欧美| 亚洲成人av在线电影| 婷婷中文字幕一区| 色戒汤唯在线观看| 欧日韩免费视频| 久久国产精品网站| 性久久久久久久| 亚洲一区一卡| 婷婷久久综合九色综合99蜜桃| 欧美亚洲综合久久| 在线观看国产v片| 国产在线精品一区| 精品国产伦一区二区三区观看体验| 精品一区二区三区在线播放| 免费h视频在线观看| 久久久久久久久久网| 91黑丝在线观看| 在线观看亚洲精品视频| 成人h版在线观看| 欧美热在线视频精品999| 久久久男人天堂| 亚洲社区在线| 福利在线小视频| 99re视频在线| 欧美成人午夜剧场免费观看| 欧美军同video69gay| 中日韩免费视频中文字幕| 香蕉精品999视频一区二区| 日韩av网站在线免费观看| 国精一区二区三区| 香蕉国产在线| 亚洲色图久久久| 久久久久福利视频| 国产精品视频福利| 97久久久免费福利网址| 精品偷拍各种wc美女嘘嘘| 色综合久久久久网| 亚洲1区2区3区视频| 国产欧美综合色| 国产福利一区二区三区视频| 日本成人中文字幕| 国产精品久久久久9999赢消| 日韩不卡在线视频| 色欧美激情视频在线| 日韩毛片在线免费看| 99热都是精品| 久久一日本道色综合| 国产欧美自拍一区| 久久久久久爱| 日韩精品第二页| 国产69精品久久久久9999人| 中国色在线日|韩| 毛片无码国产| 美女精品视频在线| 欧美日日夜夜| 亚洲乱码精品| 欧美久久综合| 欧美三级乱码| 国产乱码精品一品二品| 国产凹凸在线观看一区二区 | 97超级碰在线看视频免费在线看| 亚洲精品720p| 色七七影院综合| 色老头一区二区三区在线观看| 尤物精品国产第一福利三区| 欧美国产日韩中文字幕在线| 热门国产精品亚洲第一区在线| 亚洲在线视频观看| 五月天久久狠狠| 国产高清不卡无码视频| 99精品国产高清一区二区| 亚洲精彩视频| 亚洲欧美日韩视频二区| 久久先锋影音av| 亚洲级视频在线观看免费1级| 成人精品一二区| 免费一级网站| 国产欧美一区二区三区米奇| 成人av午夜影院| 日韩精品中文在线观看| 成人一区二区在线| 在线影院自拍| 久草福利在线| 神马影视一区二区| 亚洲日穴在线视频| 久久伊人精品视频| 精品欧美一区二区三区久久久 | 国产伦理一区| 夜夜精品浪潮av一区二区三区| 欧美黄色片免费观看| 国产精品一色哟哟| 91极品视频在线观看| 国产欧美日韩中文字幕| 国产美女被遭强高潮免费网站| 日韩在线成人| 国产视频一区二区三区在线观看 | 巨大荫蒂视频欧美另类大| 精品免费视频|