querySelectorAll() 和 getElementBy() 方法的區別

  1. querySelectorAll和getElementsBy方法都可以用在element上,但是querySelector作用於Element、nodeList、DocumentFragment時的查找範圍是從整個文檔開始,返回的是一個 Static Node List(對於返回的元素會判斷是否在元素的子樹內,將在 element 子樹內的節點組成 NodeList 返回,返回的順序根據文檔順序定義),這一點和getElementsBy(返回的是一個 Live Node List)要需要區分開的;
  2. getElementById可以接受一個不合法的id:比如<div id="my.name"></div>document.querySelectorAll('#my.name')毫無疑問是query不到它的,querySelectorAll 所接收的參數是必須嚴格符合 CSS 選擇符規範的。但是用document.getElementById('my.name')卻可以
  3. 性能上的區別:在Chrome瀏覽器下getElementBy系列的執行速度基本都是高於querySelectorAll,普遍觀點是getElementBy的性能比querySelectorAll要好很多;
  4. querySelectorAll屬於 W3C 中的 Selectors API 規範 [1]。而 getElementBy系列則屬於 W3C 的 DOM 規範 [2]。

整理自:https://www.zhihu.com/question/24702250

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