Не могу проверить наличие класса
let elem = document.getElementsByTagName("div");
document.addEventListener('click', func, false);
function func () {
console.log (elem);
if(elem.classList.contains('loggedInStateButtons')) {
console.log ('chln');
}
Говорит Uncaught TypeError: Cannot read properties of undefined (reading 'contains') at HTMLDocument.func
Ответы (2 шт):
Автор решения: highpassion
→ Ссылка
У вас в elem коллекция элементов, вы не можете проверить classList сразу у всех, вам нужно пройтись по каждому элементу из коллекции циклом.
let elem = document.getElementsByTagName("div");
document.addEventListener('click', func, false);
function func () {
//console.log(elem);
for (let i = 0; i < elem.length; i++) {
if (elem[i].classList.contains('loggedInStateButtons')) {
console.log ('chln');
}
}
}
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div class="loggedInStateButtons"></div>
Автор решения: Zombotron
→ Ссылка
Вроде проще сразу запросить элемент по нужному селектору 'div.loggedInStateButtons':
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div class="loggedInStateButtons"></div>
<script>
elem = document.querySelectorAll("div.loggedInStateButtons");
if(elem.length) {
console.log ('chln');
console.log (elem.length);
}
</script>
А брать все дивы и искать в них - это в том случае, когда в документе по-любому они есть, но нужно проверить наличие таковых в определенной группе (детей какого-то элемента) или промониторить конкретный тег.