什么时候用querySelectorAll('p') 和 getElementsByTag('p')?

我知道querySelectorAll('p') 是静态的,getElementsByTag('p') 是动态的,
querySelectorAll('p') 感觉和 jquery的 $有点相似,querySelectorAll('p')代码内部有没有使用getElementsByTag('p')

什么时候使用querySelectorAll('p')
什么时候使用getElementsByTag('p')

阅读 4.2k
5 个回答

我一般都用querySelectorAll,因为选择器书写起来方便,并且性能也不错。
然后,除非有奇怪的兼容需求,比如兼容IE7啊之类的,不然我不会用getElementsByTag

我的使用考虑是兼容性考虑,然后就是现代api优先使用。

querySelectorAll('p')使用的是css选择器的方式获取元素,它会访问完所有节点信息再得倒所选节点,所以比getElementsByTagName('p')慢,既然知道它是静态而getElementsByTagName('p')是动态的,我想对什么时候使用这两者没什么问题才对。

只选择 p 标签的话建议用 getElementsByTag('p') 因为速度快(而且兼容低版本浏览器),querySelectorAll()可以查找所有的选择器(比较强大),

querySelector语法是H5中对dom的规范api,getElementByTagName是前一版本的dom规范。
如果你的浏览器支持h5,用前面的就行了,如果是老版本浏览器,用后面的写法。

h5对dom很多私有扩展做出了统一规范,在现代浏览器中可以直接使用了

querySelectorAll支持大部分的jquery选择器,功能强大,但兼容性ie10+
getElementsByTagName只支持标签选择器,功能弱,兼容ie6+
自己选吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题