這是我參與更文挑戰的第1天,活動詳情請查看:更文挑戰css
利用css匹配規則作的原生js api接口, 提升匹配效率html
一個css選擇符html5
返回第一個匹配CSS選擇符的DOM元素web
幾乎與querySelector()相同 返回一個NodeList對象, 包含全部匹配CSS選擇符的DOM節點, 若無也是返回NodeList對象,不過其爲空api
querySelector與querySelectorAll返回的是靜態的NodeList瀏覽器
css選擇符markdown
調用該方法的元素若是與css選擇符匹配則返回true, 不然返回falseapp
返回子元素(不包括文本節點和註釋)的個數svg
指向第一個子元素; firstChild的元素版post
指向最後一個子元素; lastChild的元素版
指向前一個同輩元素; previousSibling的元素版
指向後一個同輩元素; nextSibling的元素版。
一個包含一個或多個類名的字符串
指定的類的全部元素的NodeList
返回調用元素和調用元素的全部子節點的引用
第一個參數必須是下列值之一
第二個參數是一個HTML字符串, 若是瀏覽器沒法解析該字符串,就會拋出錯誤
在刪除帶有事件處理程序或引用了其餘JavaScript對象子樹時, 就有可能致使內存佔用問題。
假設某個元素有一個事件處理程序(或者引用了一個JavaScript對象做爲屬性), 在使用前述某個屬性將該元素從文檔樹中刪除後, 元素與事件處理程序(或JavaScript對象)之間的綁定關係在內存中並無一併刪除。 若是這種狀況頻繁出現,頁面佔用的內存數量就會明顯增長。
所以,在使用innerHTML、outerHTML屬性和insertAdjacentHTML()方法時, 最好先手工刪除要被替換的元素的全部事件處理程序和JavaScript對象屬性 (第13章將進一步討論事件處理程序)
不過,使用這幾個屬性——特別是使用innerHTML,仍然仍是能夠爲咱們提供不少便利的。通常來講,在插入大量新HTML標記時,使用innerHTML屬性與經過屢次DOM操做先建立節點再指定它們之間的關係相比,效率要高得多。這是由於在設置innerHTML或outerHTML時,就會建立一個HTML解析器。這個解析器是在瀏覽器級別的代碼(一般是C++編寫的)基礎上運行的,所以比執行JavaScript快得多。不可避免地,建立和銷燬HTML解析器也會帶來性能損失,因此最好可以將設置innerHTML或outerHTML的次數控制在合理的範圍內
雖然inner HTML或outerHTML很方便, 但建立和銷燬時會帶來更高的性能損失, 應該避免頻繁使用