DOM
DOM:document objectmodel 文檔對象模型,使得用戶可以與網頁做互動;其實就是將標記型的文檔以及文檔中的內容當成對象。
爲什麼要將這些文檔以及其中的標籤封裝成對象呢?
因爲可以在對象中定義其屬性和行爲,可以方便操作這些對象。
dom三層模型
dom1:將html文檔封裝成爲對象;
dom2:將xml文檔封裝成對象;
dom3:將xml文檔封裝成對象;
標籤之間存在着層次關係:
html
|--head
|--title
|--base
|--meta
|--link
|--style
|--script
|--body
|--table
|--tbody
|--tr
|--td
|--th
|--div
|--form
|--a
通過這個標籤層次,可以形象的看做是一個樹形結構,成爲標籤型文檔,加載進內存的是一顆DOM樹。這些標籤以及標籤的數據都是這棵樹上的節點。
當標記型文檔加載進內存,那麼內存中有一個對應的DOM樹。
DOM對已標記型文檔的解析有一個弊端就是文檔過大,相對耗費資源,對於大型文檔可以使用SAX這種方式解析。
DOM樹:節點
DHTML:動態html 包含html、css、dom、javascript,多項技術的綜合體。
html:將數據進行標籤的封裝
dom:將標籤以及標籤中的數據封裝成對象
css:負責標籤中數據的樣式
javascript:將三者進行融合,通過程序設計的方式來完成動態效果的操作。
節點類型:標籤型節點:類型1
屬性節點 類型2
文本型節點:類型3
註釋型節點:類型8
document 類型9
注意:標籤之間存在空行時,會出現一個空白的文本節點,在獲取節點時一定要注意。
節點的關係:
父節點,
子節點
兄弟節點
上一個兄弟節點
下一個兄弟節點
獲取通過節點的層次關係完成。
也可以通過document對象完成:
getElementById:通過id屬性值獲取對應的節點對象,如果有多一個id值相同,獲取到的是第一個id所屬對象,儘量保證ID的唯一性,返回的是一個對象。
getElementsByName:通過標籤的name屬性值獲取對象,返回的是一堆對象,其實是一個對象的數組。
getElementsByTagName:即沒有id沒有name時,可以通過標籤名來獲取節點對象,返回的是一堆對象,其實是一個對象數組,大多數容器型標籤都具備該方法。