Uncaught TypeError: Невозможно прочитать свойство 'содержит' из неопределенного - PullRequest
0 голосов
/ 20 марта 2019

Привет, я хотел бы пройтись по всем элементам «слайд», содержащим активный класс, и взять их атрибут «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 Ответ

1 голос
/ 20 марта 2019

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