Несколько попапов на странице
У меня на странице имеются 2 модальных окна и 2 кнопки. При нажатие на "Открыть 1" должен открыть первое модальное окно, при нажатие на 2 кнопку должен открыть второе модальное окно. Я написал скрипт, но он работает не так. При нажатие на любую кнопку класс добавляется ко всем модальным окнам. Как можно сделать так чтобы класс добавлял только для определенного модального окна?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.popap{
position: absolute;
top: 50%;
left:50%;
transform: translate(-50%,-50%);
width: 400px;
height: 400px;
background-color: red;
display: none;
}
.active {
display: block;
}
</style>
</head>
<body>
<button class="open">Открыть1</button>
<button class="open">Открыть2</button>
<div class="popap" id="popap">
<h1>Ку1</h1>
<button id="delete" class="delete">Убрать</button>
</div>
<div class="popap" id="popap">
<h1>Ку2</h1>
<button id="delete" class="delete">Убрать</button>
</div>
<script src="script.js"></script>
</body>
</html>
JS
let opens = document.querySelectorAll('.open')
let deletes = document.querySelectorAll('.delete')
let popas = document.querySelectorAll('.popap')
opens.forEach(button => {
button.addEventListener('click', function(e){
e.preventDefault()
popas.forEach(popap => {
popap.classList.add('active')
})
})
});
deletes.forEach(button =>{
button.addEventListener('click', function(e){
e.preventDefault()
popas.forEach(popap => {
popap.classList.remove('active')
})
})
})
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
popas - не самое удачное наименование в русском сегменте %))
popups - корректнее.
let opens = document.querySelectorAll('.open')
let deletes = document.querySelectorAll('.delete')
let popas = document.querySelectorAll('.popap')
opens.forEach((button, i) => {
button.addEventListener('click', function(e) {
popas[i].classList.add('active');
})
});
deletes.forEach((button, i) => {
button.addEventListener('click', function(e) {
popas[i].classList.remove('active');
})
})
.popap {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 400px;
height: 400px;
background-color: red;
display: none;
}
.active {
display: block;
}
<button class="open">Открыть1</button>
<button class="open">Открыть2</button>
<div class="popap" id="popap">
<h1>Ку1</h1>
<button id="delete" class="delete">Убрать</button>
</div>
<div class="popap" id="popap">
<h1>Ку2</h1>
<button id="delete" class="delete">Убрать</button>
</div>