DOM技術(shù):
? ? ? ? ? ?DOM技術(shù)是Document Object Model(文檔對(duì)象模型)的簡(jiǎn)稱(chēng)同衣,是表示文檔(如HTML文檔)和訪問(wèn)懂算、操作構(gòu)成文檔的各種元素(如HTML標(biāo)記和文本串)的應(yīng)用程序接口(API)炼吴。它提供了文檔中獨(dú)立元素的結(jié)構(gòu)化本涕、面向?qū)ο蟮谋硎痉椒ú奥稹2⒃试S通過(guò)對(duì)象的屬性和方法訪問(wèn)這些對(duì)象赃份。另外,文檔對(duì)象模型還提供了添加和刪除文檔對(duì)象的方法铜秆,這樣能夠創(chuàng)建動(dòng)態(tài)的文檔內(nèi)容淹真。DOM也提供了處理事件的接口,它允許捕獲和響應(yīng)用戶(hù)以及瀏覽器的動(dòng)作连茧。
DOM分層結(jié)構(gòu):
? ? 當(dāng)網(wǎng)頁(yè)被加載時(shí)核蘸,瀏覽器會(huì)創(chuàng)建頁(yè)面的DOM。它把 HTML 文檔呈現(xiàn)為帶有元素啸驯、屬性和文本的樹(shù)結(jié)構(gòu)(節(jié)點(diǎn)樹(shù))客扎。整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn),每個(gè) HTML 標(biāo)簽是一個(gè)元素節(jié)點(diǎn)坯汤,包含在 HTML 元素中的文本是文本節(jié)點(diǎn) 虐唠,每一個(gè) HTML 屬性是一個(gè)屬性節(jié)點(diǎn),注釋屬于注釋節(jié)點(diǎn)惰聂。
? ? ? 我們可以通過(guò)DOM對(duì)象去修改元素的內(nèi)容以及屬性的數(shù)值疆偿。
HTML DOM 節(jié)點(diǎn)樹(shù):
節(jié)點(diǎn)關(guān)系:
? ? 節(jié)點(diǎn)樹(shù)中節(jié)點(diǎn)彼此之間存在層級(jí)關(guān)系。通常用父(parent)搓幌、子(child)和兄弟(sibling)等術(shù)語(yǔ)來(lái)描述次關(guān)系杆故。父節(jié)點(diǎn)擁有子節(jié)點(diǎn),同級(jí)子節(jié)點(diǎn)又被稱(chēng)為兄弟節(jié)點(diǎn)溉愁。
? ? ? 在節(jié)點(diǎn)樹(shù)中处铛,頂端節(jié)點(diǎn)被稱(chēng)為根(root),每個(gè)節(jié)點(diǎn)都有父節(jié)點(diǎn)拐揭、除了根(它沒(méi)有父節(jié)點(diǎn))撤蟆,一個(gè)節(jié)點(diǎn)可擁有任意數(shù)量的子節(jié)點(diǎn),同胞是擁有相同父節(jié)點(diǎn)的節(jié)點(diǎn)堂污。
遍歷文檔:
? ? ? 在DOM中家肯,HTML文檔各個(gè)節(jié)點(diǎn)被視為各種類(lèi)型的Node對(duì)象,并且將HTML文檔表示為Node對(duì)象的樹(shù)盟猖。對(duì)于任何一個(gè)樹(shù)形結(jié)構(gòu)來(lái)說(shuō)讨衣,最常做的就是遍歷樹(shù)换棚。在DOM中,可以通過(guò)Node對(duì)象parentNode反镇、firstChild固蚤、nextChild、lastChild歹茶、previousSibling等屬性來(lái)遍歷文檔樹(shù)夕玩。
Node對(duì)象的常用屬性:
操作文檔:
? ? ? 在DOM中不僅可以通過(guò)節(jié)點(diǎn)的屬性查詢(xún)節(jié)點(diǎn),還可以對(duì)節(jié)點(diǎn)進(jìn)行創(chuàng)建辆亏、插入风秤、刪除和替換等操作鳖目。這些操作都可以通過(guò)節(jié)點(diǎn)(Node)對(duì)象提供的方法來(lái)完成扮叨。
Node對(duì)象常用方法:
獲取文檔中的指定元素,主要有以下兩種方式:
通過(guò)元素的ID屬性獲取元素领迈。
? ? ? document.getElementById(“id1”);表示獲取文檔中Id屬性為id1的節(jié)點(diǎn)彻磁。
通過(guò)元素的name屬性獲取元素。
? ? ? document.getElementByName(“name”);表示獲取所有Name屬性為name的所有元素狸捅,返回值是一個(gè)數(shù)組衷蜓,而非單個(gè)元素。若想獲取單個(gè)元素可以通過(guò)下標(biāo)尘喝,比如:
? ? ? document.getElementByName(“name”)[0];