3 回答
TA贡献1876条经验 获得超6个赞
您的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');
TA贡献1776条经验 获得超12个赞
以下描述取自此页面:
getElementsByClassName()方法返回具有指定类名的文档中所有元素的集合,作为NodeList对象。
NodeList对象表示节点的集合。可以通过索引号访问节点。索引从0开始。
提示:您可以使用NodeList对象的length属性来确定具有指定类名的元素数,然后您可以遍历所有元素并提取所需的信息。
因此,作为参数getElementsByClassName
将接受类名。
如果这是您的HTML正文:
<div id="first" class="menuItem"></div><div id="second" class="menuItem"></div><div id="third" class="menuItem"></div><div id="footer"></div>
然后var menuItems = document.getElementsByClassName('menuItem')
将返回3个上部<div>
s 的集合(不是数组),因为它们匹配给定的类名。
然后,您可以使用以下命令迭代此节点(<div>
在本例中为s)集合:
for (var menuItemIndex = 0 ; menuItems.length ; menuItemIndex ++) { var currentMenuItem = menuItems[menuItemIndex]; // do stuff with currentMenuItem as a node.}
添加回答
举报