我尝试使用let modal = document.getElementsByClassName('modal')
选择一个具有modal
类的元素。只有在使用节点选择来选择第一个结果:let modal = document.getElementsByClassName('modal')[0]
之后,它才起作用。我知道Document.getElementsByClassName()
方法会返回包含所有给定类名的子元素,但是在我的HTML语言中只有一个元素包含该类。我在浏览器的开发工具中确认了这一点,方法是使用var x = document.getElementsByClassName('modal').length
并将x的值记录到控制台(正如预期的那样,它返回1)。有人能解释一下为什么在这种情况下需要节点选择吗?
编辑:我的问题与标记为重复的问题不同。在这个问题中,他们问的是返回单个元素的方法和返回类似数组的元素集合的方法之间的区别。我已经知道getElementsByClassName
返回一个类似数组的元素集合,而其他方法返回一个元素。我的问题是,如果一个类的所有元素都被返回,但一个类只有一个元素(所以只返回一个项目,即正确的项目),那么为什么需要指定索引呢?
发布于 2018-06-04 06:56:22
document.getElementsByClassName
将返回具有给定类名的元素列表。即使只有一个具有该类名的元素,它也会出现在节点列表中,这就是为什么您必须使用[0]
发布于 2018-06-04 06:59:05
之所以需要它,是因为getElementsByClassName返回的是一个HTMLCollection,而不是一个元素。
要在不使用[0]
的情况下获取项,请使用query selector,这将为您提供项而不是项的集合。
let modal = document.querySelector('.modal')
console.log(modal)
发布于 2018-06-04 06:59:41
document.getElementsByClassName
将返回具有此类的元素的数组
https://stackoverflow.com/questions/50671701
复制相似问题