首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当只有一个类可供选择时,为什么getElementsByClassName需要[0]才能工作?

当只有一个类可供选择时,为什么getElementsByClassName需要[0]才能工作?
EN

Stack Overflow用户
提问于 2018-06-04 06:54:01
回答 3查看 2.1K关注 0票数 5

我尝试使用let modal = document.getElementsByClassName('modal')选择一个具有modal类的元素。只有在使用节点选择来选择第一个结果:let modal = document.getElementsByClassName('modal')[0]之后,它才起作用。我知道Document.getElementsByClassName()方法会返回包含所有给定类名的子元素,但是在我的HTML语言中只有一个元素包含该类。我在浏览器的开发工具中确认了这一点,方法是使用var x = document.getElementsByClassName('modal').length并将x的值记录到控制台(正如预期的那样,它返回1)。有人能解释一下为什么在这种情况下需要节点选择吗?

编辑:我的问题与标记为重复的问题不同。在这个问题中,他们问的是返回单个元素的方法和返回类似数组的元素集合的方法之间的区别。我已经知道getElementsByClassName返回一个类似数组的元素集合,而其他方法返回一个元素。我的问题是,如果一个类的所有元素都被返回,但一个类只有一个元素(所以只返回一个项目,即正确的项目),那么为什么需要指定索引呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-04 06:56:22

document.getElementsByClassName将返回具有给定类名的元素列表。即使只有一个具有该类名的元素,它也会出现在节点列表中,这就是为什么您必须使用[0]

票数 7
EN

Stack Overflow用户

发布于 2018-06-04 06:59:05

之所以需要它,是因为getElementsByClassName返回的是一个HTMLCollection,而不是一个元素。

要在不使用[0]的情况下获取项,请使用query selector,这将为您提供项而不是项的集合。

代码语言:javascript
复制
let modal = document.querySelector('.modal')
console.log(modal)
票数 3
EN

Stack Overflow用户

发布于 2018-06-04 06:59:41

代码语言:javascript
复制
document.getElementsByClassName

将返回具有此类的元素的数组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50671701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档