为了账号安全,请及时绑定邮箱和手机立即绑定

querySelectorAll 方法相比 getElementsBy 系列方法有什么区别?

querySelectorAll 方法相比 getElementsBy 系列方法有什么区别?

刚毅87 2016-06-18 16:12:26
var ul1 = document.getElementById('ul1') ;var lis = document.querySelectorAll('li');var lis = document.getElementsByTagName('li');querySelectorAll 方法相比 getElementsBy 系列方法有什么区别?
查看完整描述

3 回答

?
刚毅87

TA贡献345条经验 获得超309个赞

在现代浏览器中,querySelectorAll 的返回值是一个静态的 NodeList 对象,而 getElementsBy 系列的返回值实际上是一个 HTMLCollection 对象 。

getElement* 的实时性体现在返回集合的时候,我们知道getElementsBy*和querySelectorAll返回的都是一个节点集合,类似于数组,两种方法的区别就在于这个集合会不会自动更新。

querySelectorAll 的返回值是一个静态数组,之后对document结构的改变不会影响到之前取到的结果


查看完整回答
2 反对 回复 2016-06-18
  • 黄志明
    黄志明
    这么说在动态页面里document更加实用了?毕竟现在很多前端东西都是后台数据传过来的?
  • 刚毅87
    刚毅87
    在动态页面中 getElementsBy 应该更加适合,可以这么说
?
_潇潇暮雨

TA贡献646条经验 获得超225个赞

querySelectorAll可以像jQuery那样传入CSS选择器进行元素的选取,例如选取div下面所有的a就可以写成document.querySelectorAll('div a'),而通过getElementsBy则需要2步:document.getElementsByTagName('div')[0].getElementsByTagName('a')

查看完整回答
1 反对 回复 2016-06-18
  • 刚毅87
    刚毅87
    document.getElementsByTagName('a') 只需一步!
  • _潇潇暮雨
    _潇潇暮雨
    你这是选取页面中所有的a元素并不是div下面的a。
  • 刚毅87
    刚毅87
    好吧,这我也知道,但这不是我问的重点. 我把问题改了!
  • 3 回答
  • 0 关注
  • 2302 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信