Не могу проверить наличие класса

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>

А брать все дивы и искать в них - это в том случае, когда в документе по-любому они есть, но нужно проверить наличие таковых в определенной группе (детей какого-то элемента) или промониторить конкретный тег.

→ Ссылка