javascript - querySelectorAll和getElementsBy *方法返回什么?

标签 javascript getelementsbyclassname dom-traversal

getElementsByClassName(以及类似功能,例如getElementsByTagNamequerySelectorAll)是否与getElementById相同,或者它们返回元素数组?

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

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

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

最佳答案

您的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');

关于javascript - querySelectorAll和getElementsBy *方法返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55308285/

相关文章:

javascript - 重叠 Paper.JS (HTML5) Canvas 和 VivaGraphJS(SVG) 图 : Capturing Events

javascript - 替换一行Javascript中的多个字符

javascript - 谷歌地图 - 特定日期和时间的 map

javascript - 如何通过类名获取正在更改的多个元素?

javascript - 意外的 childNodes 行为

jQuery 父选择器

javascript - 动态生成的方法

javascript - 在多个元素上调用 onClick 函数

javascript - getElementsByClassName 似乎不起作用

javascript - DOM 中元素之间的“距离”(生成深度等)