DOM(Document Object Model)也稱為文檔對象模型,是 W3C 組織推薦的處理可擴展標(biāo)記語 言的標(biāo)準(zhǔn)編程接口。DOM 是一種與瀏覽器、平臺和語言無關(guān)的應(yīng)用程序接口(API),它可以動態(tài) 地訪問程序和腳本,更新其內(nèi)容、結(jié)構(gòu)和 WWW 文檔的風(fēng)格。如果把文檔作為一個樹形結(jié)構(gòu),那 么樹的每個節(jié)點表示了一個 html 標(biāo)簽或標(biāo)簽內(nèi)的文本項。DOM 樹結(jié)構(gòu)精確地描述了 HTML 文 檔中標(biāo)簽間的相互關(guān)聯(lián)性。使用 DOM 接口可以同時定義很多方法來操作這棵樹中的每一個元 素(節(jié)點)。下面構(gòu)建一個網(wǎng)頁文檔,并且提煉出它的文檔結(jié)構(gòu),用 DOM 的樹形模式顯示出來。 這樣可以更詳細地講解 DOM 的操作,HTML 文檔的結(jié)構(gòu)如下:
將上面的 HTML 文檔解析后,轉(zhuǎn)化為一份完整的 DOM 樹形結(jié)構(gòu),如下圖所示:
而瀏覽器中所顯示的網(wǎng)頁內(nèi)容,如下圖所示:
因此,對 HTML 文檔的處理可以通過對 DOM 樹的操作實現(xiàn)。DOM 模型不僅描述了文檔的結(jié)構(gòu),還定義了節(jié)點對象的行為,利用對象的方法和屬性,可以方便地訪問、修改、添加和刪除 DOM 樹的節(jié)點和內(nèi)容。
節(jié)點這個詞是一個網(wǎng)絡(luò)用語,代表了網(wǎng)絡(luò)中的一個連接點。一個網(wǎng)絡(luò)就是由一些節(jié)點構(gòu)成的 集合。在 DOM 中,文檔是由節(jié)點構(gòu)成的集合,它們包括元素、屬性、文本、文檔、注釋等。在 實際開發(fā)時,要創(chuàng)建動態(tài)的內(nèi)容,主要操作的節(jié)點包括元素節(jié)點、文本節(jié)點和屬性節(jié)點。元素節(jié) 點即標(biāo)簽,如 <html>、<body>、<div>、<p> 等。文本節(jié)點即向用戶展示的內(nèi)容,如 <div>...</div>中的 JAVAScript、DOM、css 等文本。屬性節(jié)點即元素屬性,如 <a> 標(biāo)簽的鏈接屬性href="http://news.baidu.com/"。
通俗地說,在網(wǎng)頁中,HTML 是主體,裝載各種 DOM 元 素;CSS 用來裝飾 DOM 元 素; JavaScript 控制 DOM 元素。再次強調(diào) DOM 是一個樹形結(jié)構(gòu)。操作一個 DOM 節(jié)點主要就是以下幾 個操作:
(1)獲取節(jié)點:通過 class 屬性的類名獲取元素,返回元素對象數(shù)組;通過 id 屬性的 id 值獲 取元素,返回一個元素對象;通過 name 屬性獲取元素,返回元素對象數(shù)組;通過標(biāo)簽名獲取元素, 返回元素對象數(shù)組。
(2)更新節(jié)點:更新 DOM 節(jié)點的內(nèi)容。
(3)添加新節(jié)點:在 DOM 節(jié)點下新增一個子節(jié)點。
(4)遍歷節(jié)點:遍歷 DOM 節(jié)點下的子節(jié)點。
(5)刪除節(jié)點:將該節(jié)點從 HTML 中刪除,同時該節(jié)點下的節(jié)點也會一并刪除。