未捕获的TypeError:无法读取未定义的属性“包含”

时间:2019-03-20 17:59:44

标签: javascript getattribute

嗨,我喜欢遍历所有包含活动类的“幻灯片”项目并采用其“数据头文字”属性。我在做什么错了?

<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 个答案:

答案 0 :(得分:1)

您的代码中的

elems是一个不具有属性classList的节点列表。您应该访问classList内的元素elems

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));