是什么是DOM
什么是 DOM?
DOM 是?文檔對象模型(Document Object Model)的簡稱,它的基本思想是把結(jié)構(gòu)化文檔(比如 HTML 和 XML)解析成一系列的節(jié)點(diǎn),再由這些節(jié)點(diǎn)組成一個樹狀結(jié)構(gòu)(DOM Tree)。所有的節(jié)點(diǎn)和最終的樹狀結(jié)構(gòu),都有規(guī)范的對外接口,以達(dá)到使用編程語言操作文檔的目的,所以,DOM 可以理解成文檔(HTML 文檔、XML 文檔)的編程接口。
嚴(yán)格地說,DOM 不屬于 JavaScript,但是操作 DOM 是 JavaScript 最常見的任務(wù),而 JavaScript 也是最常用于 DOM 操作的語言,本章介紹的就是 JavaScript 對 DOM 標(biāo)準(zhǔn)的實(shí)現(xiàn)和用法。
什么優(yōu)勢樹狀結(jié)構(gòu)?
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>HTML DOM樹型結(jié)構(gòu)圖</title> </head> <body> <div> <ul> <li>one</li> <li>two</li> <li>three</li> </ul> <div>abc</div> <p>para</p> <div>def</div> <p>para</p> <b>ghi</b> </div> </body> </html>
依據(jù)上面的HTML文檔,可以繪制一個清晰的DOM結(jié)構(gòu)樹
文檔樹包含有多個層級是因?yàn)镠TML元素間的相互嵌套。其中把直接嵌入其他元素的元素被稱做那些元素的子元素(Child),例如結(jié)構(gòu)圖中的li就是ul的子元素;而隨著嵌套的繼續(xù)深入,它們也就成了后代元素(Descendant),同樣,結(jié)構(gòu)圖中的li元素就是body元素的后代元素。那些外部元素稱為父元素(Parent)(一層之上),例如結(jié)構(gòu)圖中的ul元素就是li元素的父元素;有些外部元素稱做祖先元素(Ancestor)(兩層或以上),例如結(jié)構(gòu)圖中的body就是li元素的祖先元素。另外位于相同嵌套層級的元素稱為兄弟元素(具有同一父元素節(jié)點(diǎn)),例如結(jié)構(gòu)圖中的兩個段落P元素就是兄弟元素,因?yàn)樗鼈兙哂型粋€父元素div。在HTML文檔中,一個元素可以同時擁有以上部分甚至所有稱謂,正如家譜中的某個成員一樣,總的來說這些稱謂都是用來描述一個元素與另一個元素的關(guān)系。