querySelectorAll和getElementsByClassName的認識

1. querySelectorAll(name)

返回一個 NodeList表示元素的列表(類數組對象),把當前的元素作爲根與指定的選擇器組相匹配。

2. getElementsByClassName(name)

返回一個包含了所有指定類名的子元素的類數組對象(HTMLCollection)。當在document對象上調用時,會搜索整個DOM文檔,包含根節點。

比較點:
  1. 結果
    querySelectorAll返回的是靜態結果,不會隨文檔變化而變化。getElementsByClassName返回的是動態結果,會及時更新文檔的變化。

  2. 參數name:
    querySelectorAllname由逗號連接的包含一個或多個CSS選擇器的字符串。
    getElementsByClassName的參數name可包含一或多個類名,元素必須同時包括這些類名。

  3. 規範
    querySelectorAll屬於 W3C 中的 Selectors API 規範;getElementsByClassName屬於 W3CDOM 規範。

  4. 執行效率
    單從API執行效率上,getElementsByClassName要比querySelectorAll快。但是我們使用上差異微乎其微,具體選用哪個API要看使用場景。

延申:NodeList和HTMLCollection的區別

兩張圖基本上就明白了:



詳見 HTMLCollection與NodeList

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