- querySelectorAll和getElementsBy方法都可以用在element上,但是querySelector作用于Element、nodeList、DocumentFragment时的查找范围是从整个文档开始,返回的是一个 Static Node List(对于返回的元素会判断是否在元素的子树内,将在 element 子树内的节点组成 NodeList 返回,返回的顺序根据文档顺序定义),这一点和getElementsBy(返回的是一个 Live Node List)要需要区分开的;
- getElementById可以接受一个不合法的id:比如<div id="my.name"></div>用document.querySelectorAll('#my.name')毫无疑问是query不到它的,querySelectorAll 所接收的参数是必须严格符合 CSS 选择符规范的。但是用document.getElementById('my.name')却可以
- 性能上的区别:在Chrome浏览器下getElementBy系列的执行速度基本都是高于querySelectorAll,普遍观点是getElementBy的性能比querySelectorAll要好很多;
- querySelectorAll属于 W3C 中的 Selectors API 规范 [1]。而 getElementBy系列则属于 W3C 的 DOM 规范 [2]。
整理自:https://www.zhihu.com/question/24702250