未捕获的类型错误:无法读取未定义的属性“包含”
2019-03-20
17483
嗨,我喜欢循环遍历所有包含活动类的“幻灯片”项目并获取其“data-headertext”属性。我做错了什么?
<div class="slide active"></div>
var elems = document.getElementsByClassName('slide');
for (var i = 0, len = elems.length; i < len; i++) {
if (elems.classList.contains("active")) {
myJavascriptFunc
}
}
function myJavascriptFunc() {
alert(this.getAttribute('data-headertext'));
}
1个回答
代码中的
elems
是一个没有属性
classList
的节点列表。您应该访问
elems
内元素的
classList
if (elems[i].classList.contains("active"))
更简单的方法:
也可以使用
querySelectorAll()
来实现这一点,为其提供多个类并使用
forEach()
const elems = document.querySelectorAll('.slide.active')
elems.forEach(a => console.log(a.getAttribute('data-headertext')))
在这种情况下,您想要获取
data
属性。因此最好使用
HTMLElement.dataset
`
const elems = document.querySelectorAll('.slide.active')
elems.forEach(a => console.log(a.dataset.headertext));
Maheer Ali
2019-03-20