在JavaScript中如何?DOM操作(1)

來源:互聯網
上載者:User

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

BKJIA推薦閱讀: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)三個方法,不再展開。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.