JavaScript學習筆記之DOM擴展

DOM作爲API已經很完善了,但是爲了實現更多的功能,還是有着各種各樣的擴展和功能上的補充。

DOM擴展

1、選擇符API(Selector API)

它包括兩個核心方法,用來實現根據CSS選擇符選擇與某個模式匹配的DOM元素。分別是querySelector()方法和querySelectorAll()方法。這兩個方法可以通過Document、DocumentFragment和Element的類型的實例調用它們。

querySelector():接受一個CSS選擇符,返回與該模式匹配的第一個元素,沒找到則返回null

querySelector():接受一個CSS選擇符,返回所有與該模式匹配的元素,返回一個NodeList的實例。注:這個NodeList帶有所有屬性和方法,而其底層實現類似於一組元素的快照,而非不斷對文檔進行搜索的動態查詢。

2、元素遍歷

由於之前DOM的方法,對於元素間的空格,IE9及之前的版本不會返回文本節點,而其他瀏覽器則會返回文本節點。因此,DOM擴展又新增了5個屬性:childElementCount,firstElementChild,lastElementChild,previousElementSibling,nextElementSibling。這些屬性會不包括空白文本節點,所以可以更方便遍歷查找DOM元素。

3、HTML5

HTML5規範圍繞如何使用新增標記定義了大量的JavaScript API,其中一些API與DOM重疊,定義了瀏覽器應該支持的DOM擴展。

getElementByClassName():接受一個參數,包含一或多個類名的字符串,返回帶有指定類的元素的NodeList。

classList屬性:是一個新集合類型DOMTokenList的實例,包含着一個元素的類名信息。這個屬性定義了4種方法:add(),contains(),remove()和toggle()用來對類名進行相應操作。

document.activeElement:指向DOM中當前獲得了焦點的元素

document.hasFocus():確定文檔是否獲得了焦點

document.readyState:表示文檔的加載情況,包括loading和complete兩個可能值

document.compatMode:用來判斷瀏覽器採用了哪種渲染模式,可能值爲CSS1Compat表示標準模式和BackCompat表示混雜模式

document.head:指向文檔的<head>元素
dataset屬性:用來訪問自定義屬性的值,它是一個DOMStringMap的實例,也就是名值對的映射。注:自定義屬性要加data-前綴,而在dataset中相應屬性名則去掉前綴

scrollIntoView():使得調用元素出現在視口中。

4、插入標記

雖然DOM爲操作節點提供了各種手段,但是需要給文檔插入大量新HTML標記的情況下,通過DOM操作會很麻煩,使用插入標記的技術,直接插入HTML字符串不僅更簡單,速度也更快。

innerHTML:讀模式下會返回與調用元素的所有子節點對應的HTML標記。在寫模式下,會根據指定的值創建新的DOM樹,然後用這個DOM樹完全替換元素原先的所有子節點。

在寫模式下,因爲它的值被認爲是HTML,所以其中的所有標籤都會按照瀏覽器處理HTML的標準方式轉換爲元素。如果設置的值是文本而沒有HTML標籤,則結果就是設置純文本。

outerHTML:與innerHTML基本相同,只是相應的處理都會加上調用節點。

注:在使用innerHTML和outerHTML時,最好手工刪除要被替換的元素的所有事件處理程序和JavaScript對象屬性,否則可能會導致瀏覽器的內存佔用問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章