querySelectorAll() 和 getElementBy() 方法的区别

本文对比了querySelectorAll与getElementsBy等方法在元素查询上的差异,包括它们的查找范围、返回类型及性能表现,揭示了getElementById在ID选择上的独特优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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

转载于:https://my.oschina.net/u/3759656/blog/2966817

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值