не работает querySelector/ALL. помогите решить проблему
получаю элементы по id, всё хорошо. Как только query (не важно какой) сразу null или пустая коллекция. Перенес загрузку скриптов в конец, повесил событие на загрузку страницы - ничего не помогает. Сгорел:)
;
;
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">✖</button>
</div>
</div>
<button id="open" class="open1">открыть</button>
<script src="script.js"></script>
</body>
</html>
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
Функции .querySelector*
принимают в качестве параметра css-селектор
.
Чтобы выбрать элемент по id
вызов должен быть .querySelector('#id')
В то время как для функции .getElementById
передается идентификатор без #
Аналогично для выборки по классу, перед именем класса должна стоять .