一尘不染

querySelectorAll和getElementsBy *方法返回什么?

javascript

DO
getElementsByClassName(等类似的功能getElementsByTagNamequerySelectorAll)的工作一样getElementById,还是他们返回元素的数组?

我问的原因是因为我试图使用更改所有元素的样式getElementsByClassName。见下文。

//doesn't work
document.getElementsByClassName('myElement').style.size = '100px';

//works
document.getElementById('myIdElement').style.size = '100px';

阅读 438

收藏
2020-04-22

共1个答案

一尘不染

您的getElementById()代码可以正常工作,因为ID必须是唯一的,因此该函数始终仅返回一个元素(或者null如果找不到元素)。

然而,getElementsByClassName()querySelectorAll(),和其他getElementsBy*方法返回元件的阵列状的集合。像使用真实数组那样对其进行迭代:

var elems = document.getElementsByClassName('myElement');
for(var i = 0; i < elems.length; i++) {
    elems[i].style.size = '100px';
}

如果您喜欢较短的内容,请考虑使用jQuery:

$('.myElement').css('size', '100px');
2020-04-22