не работает querySelector/ALL. помогите решить проблему

получаю элементы по id, всё хорошо. Как только query (не важно какой) сразу null или пустая коллекция. Перенес загрузку скриптов в конец, повесил событие на загрузку страницы - ничего не помогает. Сгорел:)

js; window; html


    window.addEventListener("load", function() {
    
    
    let buttonElems = document.querySelectorAll("open1");
    let modalElem = document.getElementById("modal");
    
    console.log(buttonElems);
    
    
    const closeModal = event => {
        const target = event.target;
            console.log(target.matches('modal_close'));
            console.log(target);
        if (target === modalElem || target.classList.contains('modal_close')) {
            
            modalElem.style.opacity =0;
            setTimeout(() => {
                modalElem.style.visibility = "hidden";
                modalElem.style.display = "none";
            },300)
        }
    }
    
    
    const openmod = function openModal(){
    modalElem.style.cssText =  `
    display: flex;
    visibility: hidden;
    opacity: 0;
    transition: opacity 400ms ease-in-out;
    `;
    
    modalElem.style.visibility = 'visible';
    modalElem.style.opacity = 1;
    }
    
    
    buttonElems.forEach(btn =>{
        btn.addEventListener('click', openmod);
    });
    
    modalElem.addEventListener('click', closeModal);
    
    });

разметка

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
     <link rel="stylesheet" href="style.css">
</head>
<body>


<button id="open" class="open1">открыть</button>

    <div class="modal" id="modal">
        <div class="modal_main">

            <h2 class="modal_title">modal window</h2>
            <div class="modal_container">
                <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. 
                    Consequuntur, odit. A dolorem modi neque, porro corporis similique 
                    temporibus alias doloremque ipsa maxime in placeat voluptas saepe molestiae voluptatem nesciunt minus.
                </p>
            </div>
            <button class="modal_close">&#10006;</button>
        </div>
    </div>


<button id="open" class="open1">открыть</button>

<script  src="script.js"></script>
</body>

</html>

Ответы (1 шт):

Автор решения: Grundy

Функции .querySelector* принимают в качестве параметра css-селектор.

Чтобы выбрать элемент по id вызов должен быть .querySelector('#id')

В то время как для функции .getElementById передается идентификатор без #

Аналогично для выборки по классу, перед именем класса должна стоять .

→ Ссылка