JavaScript HTML DOM
通過 HTML DOM,可訪問 JavaScript HTML 文檔的所有元素。
HTML DOM (文檔對象模型)
當網頁被加載時,瀏覽器會創建頁面的文檔對象模型(Document Object Model)。
HTML DOM 模型被構造爲對象的樹:
通過可編程的對象模型,JavaScript 獲得了足夠的能力來創建動態的 HTML。
- JavaScript 能夠改變頁面中的所有 HTML 元素
- JavaScript 能夠改變頁面中的所有 HTML 屬性
- JavaScript 能夠改變頁面中的所有 CSS 樣式
- JavaScript 能夠對頁面中的所有事件做出反應
查找 HTML 元素
通常,通過 JavaScript,需要操作 HTML 元素。
爲了做到這件事情,您必須首先找到該元素。有三種方法來做這件事:
- 通過 id 找到 HTML 元素
var x=document.getElementById("intro");
- 通過標籤名找到 HTML 元素:查找 id=“main” 的元素,然後查找 id=“main” 元素中的所有
元素
var x=document.getElementById("main");
var y=x.getElementsByTagName("p");
- 通過類名找到 HTML 元素:通過 getElementsByClassName 函數來查找 class=“intro” 的元素:
var x=document.getElementsByClassName("intro");
DOM規範
-
正如W3C所定義的,DOM是獨立於平臺和語言的接口,該接口爲程序和腳本提供了對文檔的內容、結構和樣式的動態獲取和更新的功能。
-
DOM的出現來自對動態頁面的需求,先有DOM的實現(Netscape DOM0),再有各個廠商對DOM實現規範的需求,再有了W3C Activity Statement對於DOM發展的規範,然後纔有了我們所說的“DOM”。
- DOM0:不是W3C規範。
- DOM1:開始是W3C規範。專注於HTML文檔和XML文檔。
- DOM2:對DOM1增加了樣式表對象模型(DOM2)
- DOM3:對DOM2增加了內容模型 (DTD 、Schemas) 和文檔驗證。
- DOM0指的是Necscape3.0和IE3.0提供對於HTML文檔功能,實現了包括元素(HTML Element)、表單(Form)、圖像(Image)等的接口和方法。DOM0雖然年代久遠,某些實現並不符合新的DOM理念,但爲了向後兼容,很多現代瀏覽器仍然支持DOM0的某些方法和屬性。即便某些方法的實現原理有所不同,但提供了可用性。
- DOM0出現後,各廠商意識到DOM的前景,紛紛向W3C建議DOM的規範化。於是出現了W3C DOM Activity Statement(DOM的活動清單)以及DOM1、DOM2、DOM3規範(Specification)
- DOM1 1.0版本發佈於1998年10月1日,是第一個DOM規範。DOM1包含兩部分:
- DOM1 Core:定義了DOM最基本的接口,包括Document,Node,NodeList等等。
- DOM1 THML:HTML文檔是DOM的一種實現,該規範定義了基於DOM1 Core的HTML文檔實現。
- DOM2規範在2000年11月13日發佈,主要包含6個模塊,相比於DOM1,DOM2更加豐富,更加完善。目前主流瀏覽器對DOM2有着良好的支持。
-
DOM2 Core: 相比於DOM1 Core,DOM2豐富了Document,Node等接口的功能,
-
DOM2 View:View提供的是DOM的表現形式,同一個文檔源(document source),可能有不同的表現形式,DOM2 View引入了Abstract View和Document View接口。
-
DOM2 Event:DOM 事件處理系統規範,DOM1中並未對DOM的事件模型進行定義,
-
在DOM2中規範事件模型(Event Model)主要有兩個目的:
- 1)設計一套通用的事件系統,實現事件處理程序的註冊和註銷,描述事件的流動(Event Flow),事件的上下文信息(Contextual Information )等;
- 2)提供一套規範子集兼容老版本瀏覽器DOM0的事件實現。
-
DOM2 Style:程序和腳本動態地獲取和更新DOM的樣式,提供包括Style Sheet,Cascading Style Sheet, CSSRule, CSSStyleDeclaration, getComputedStyle接口。DOM2 Style的實現基於DOM2 Core和DOM2 View。
-
DOM2 Traverse and Range:DOM2 Traverse是關於文檔節點遍歷的規範,包括Treewalker,NodeIterator和NodeFilter等;
-
DOM2 Range是關於DOM片段(Document Fragment)操作的規範,譬如DocumentFragment。
-
DOM2 HTML:在DOM1 HTML的基礎上結合DOM2 Core推出了一些新的接口和屬性
-
DOM3首次發佈於2004年4月,主要包括Core、Load and Save、Validation、XPath、View and Formatting、Events和Abstract Schemas7個模塊。目前主流瀏覽器對DOM3的支持比較有限。