querySelectorAll和getElementsBy *方法返回什么?
DO getElementsByClassName
(等类似的功能getElementsByTagName
和querySelectorAll
)的工作一样getElementById
,还是他们返回元素的数组?
我问的原因是因为我试图使用更改所有元素的样式getElementsByClassName
。见下文。
//doesn't work
document.getElementsByClassName('myElement').style.size = '100px';
//works
document.getElementById('myIdElement').style.size = '100px';
它返回类似数组的列表。
您以一个数组为例
换一种说法
document.querySelector()
仅选择指定选择器的第一个元素。因此它不会吐出一个数组,而是一个值。类似于document.getElementById()
仅获取ID元素,因为ID必须是唯一的。document.querySelectorAll()
使用指定的选择器选择所有元素,然后将它们返回到数组中。与仅document.getElementsByClassName()
适用于类和document.getElementsByTagName()
标签相似。为什么要使用querySelector?
它仅用于轻松和简洁的目的。
为什么要使用getElement / sBy?*
性能更快。
为什么会有这种性能差异?
两种选择的目的都是为了创建NodeList以便进一步使用。 querySelectors使用选择器生成一个静态NodeList,因此必须首先从头开始创建它。
getElement / sBy *立即适应当前DOM的现有活动NodeList。
因此,何时使用哪种方法取决于您/您的项目/您的设备。
资讯
所有方法的演示
NodeList文档
性能测试
你的回答