И-ый клик по кнопкам - открывания модального окна?
как сделать и-ый клик по кнопке Допустим с нас на сайте будет 5 кнопок и 5 мочалок. Как сделать чтобы при клике на ЭТУ кнопку будет открываться ЭТА моделька
// Get the modal
var modal = document.getElementById("myModal");
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
// When the user clicks the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
// window.onclick = function(event) {
// if (event.target == modal) {
// modal.style.display = "none";
// }
// }
/* The Modal (background) */
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}
/* Modal Content */
.modal-content {
background-color: #fefefe;
margin: auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
/* The Close Button */
.close {
color: #aaaaaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
<button class="btn_y" id="myBtn">Подробнее</button>
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close">×</span>
<p>Some text in the Modal..</p>
</div>
</div>
Ответы (1 шт):
Автор решения: meine
→ Ссылка
Простой пример связывания A с B, не стал писать доп. проверки (если одно открывается, то активное закрывается и тому подобное), делать какой-то дизайн, сама суть в коде ниже, но если сильно нужно - напишите в коментариях, напишу более подробно.
// Используем делегирование, лучший подход, ибо модальных окон может быть N-е количество
document.body.addEventListener('click', e => {
// Проверяем, если клик был воспроизведён по элементу, который открывает "мочалку"
const a = e.target.closest('.a');
// Если клик был не по тому элементу, который нам нужен, то ничего не делаем
if (!a) return;
// Достаём атрибут [data-name] кликнутого элемента
const name = a.getAttribute('data-name');
// Ищём "мочалку" по полученному атрибуту [name]
const b = document.body.querySelector(`.b[data-name="${name}"]`);
// Если "мочалки" нет, то выкидаем ошибку, что её не существует на странице (если создаёте динамически, то, в принципе, это не нужно)
if (!b)
console.error(`The mochalka with name ${name} doesn't exist on the current page.`);
// Проверяем, если "мочалка" показана, то скрываем, если нет, то открываем
b.classList.contains('b--is-active')
? b.classList.remove('b--is-active')
: b.classList.add('b--is-active');
})
.a,
.b{
border: 1px solid transparent;
padding: 15px;
display: inline-block;
}
.a { border-color: green; }
.b {
border-color: red;
display: none;
}
.b--is-active { display: block; }
<div class="a" data-name="1">Мочалка #1</div>
<div class="a" data-name="2">Мочалка #2</div>
<div class="a" data-name="3">Мочалка #3</div>
<div class="b" data-name="1">Мочалка #1 1</div>
<div class="b" data-name="2">Мочалка #2 2</div>
<div class="b" data-name="3">Мочалка #3 3</div>