我知道querySelectorAll('p')
是静态的,getElementsByTag('p')
是动态的,querySelectorAll('p')
感觉和 jquery的 $
有点相似,querySelectorAll('p')
代码内部有没有使用getElementsByTag('p')
?
什么时候使用querySelectorAll('p')
?
什么时候使用getElementsByTag('p')
?
我知道querySelectorAll('p')
是静态的,getElementsByTag('p')
是动态的,querySelectorAll('p')
感觉和 jquery的 $
有点相似,querySelectorAll('p')
代码内部有没有使用getElementsByTag('p')
?
什么时候使用querySelectorAll('p')
?
什么时候使用getElementsByTag('p')
?
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+
自己选吧
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
6 回答1.2k 阅读
我一般都用
querySelectorAll
,因为选择器书写起来方便,并且性能也不错。然后,除非有奇怪的兼容需求,比如兼容IE7啊之类的,不然我不会用
getElementsByTag
。我的使用考虑是兼容性考虑,然后就是现代api优先使用。