У меня есть цикл for, который отвечает за открытие пользовательского модального окна. Кнопка открытия определяется как несколько элементов с классом .col-sm-4.
Вот код:
// Get the modal
var modal = document.getElementById('myModal');
// Get the opening trigger
var btn = document.getElementsByClassName('col-sm-4');
for (var i = 0; i < btn.length; i++) {
// Open modal by clicking the order display
btn[i].onclick = function(event) {
// Check to see if target is the parent element
if (event.target.tagName.toLowerCase() === 'div') {
modal.style.display = 'block';
document.getElementsByClassName('col-sm-4');
var idDIVOrderParent = btn[0].id;
// Having trouble grabbing the correct ID
console.info('The order ID is ' + idDIVOrderParent);
// extract orderId9999 from string like parentOrderId9999
var idDIVOrder = 'o' + idDIVOrderParent.substr(7);
console.info('The modal is currently displaying ' + idDIVOrder);
document.getElementById(idDIVOrder).style.display = 'block';
} else {
// console.info('Child element clicked!');
}
}
}
Там, где написано, что var idDIVOrderParent = btn[0].id, у меня возникают трудности. Как я могу получить идентификатор правильного .col-sm-4, который запустил модальное окно?
Вы можете использовать event.currentTarget.id вместо btn[0] или создать закрытие.
document.getElementsByClassName('col-sm-4'); <- эта строка ничего не делает
Спасибо @Alex и @Titus! Не знаю, почему я не подумал об этом раньше.
У меня есть дополнительный вопрос: если я хочу закрыть модальное окно с помощью кнопки X и щелкнув за пределами модального дисплея, как я могу применить display: none к тому же .col-sm-4? Вот код для закрытия модального. Извините за неполный фрагмент.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это должно помочь.
var modal = document.getElementById('myModal');
var btn = document.getElementsByClassName('col-sm-4');
for (let i = 0; i < btn.length; i++) {
btn[i].onclick = function(event) {
if (event.target.tagName.toLowerCase() === 'div') {
modal.style.display = 'block';
let idDIVOrderParent = btn[i].id;
console.info('The order ID is ' + idDIVOrderParent);
let idDIVOrder = 'o' + idDIVOrderParent.substr(7);
modal.textContent = idDIVOrder;
console.info('The modal is currently displaying ' + idDIVOrder);
}
}
}#myModal {
width: 200px;
text-align: center;
background: #ccc;
display: none;
}<div id = "parentOrderId9999" class = "col-sm-4">btn1</div>
<div id = "parentOrderId1111" class = "col-sm-4">btn2</div>
<div id = "parentOrderId2222" class = "col-sm-4">btn3</div>
<div id = "parentOrderId3333" class = "col-sm-4">btn4</div>
<div id = "myModal"></div>
Вы можете получить доступ к нажатой кнопке через
event.target.