Для реализации закрытия модального окна при клике на затемнённую область (оверлей), вам нужно добавить обработчик события на этот элемент. Я покажу, как это сделать, основываясь на вашем коде.
Допустим, вы уже имеете оверлей с ID `woostify-overlay`, и хотите закрыть модальное окно, если пользователь кликнул на этот оверлей.
Вот обновлённый код, который добавляет такой функционал:
```javascript
var modalparent = document.getElementsByClassName("secondary"),
modal_btn_multi = document.getElementsByClassName("toggle-sidebar"),
span_close_multi = document.getElementsByClassName("toggle-close"),
overlay = document.getElementById('woostify-overlay');
html = document.documentElement;
// Когда пользователь нажимает кнопку, открывается модальное окно
function setDataIndex() {
for (i = 0; i < modal_btn_multi.length; i++) {
modal_btn_multi[i].setAttribute('data-index', i);
modalparent[i].setAttribute('data-index', i);
span_close_multi[i].setAttribute('data-index', i);
}
}
for (i = 0; i < modal_btn_multi.length; i++) {
modal_btn_multi[i].onclick = function() {
var ElementIndex = this.getAttribute('data-index');
modalparent[ElementIndex].classList.add('active');
html.classList.add('sidebar-mobile-open');
if (overlay) {
overlay.classList.add('active');
}
};
// Когда пользователь нажимает на <span> (x), закрывается модальное окно
span_close_multi[i].onclick = function() {
var ElementIndex = this.getAttribute('data-index');
modalparent[ElementIndex].classList.remove('active');
html.classList.remove('sidebar-mobile-open');
if (overlay) {
overlay.classList.remove('active');
}
};
}
// Добавляем обработчик клика на оверлей
if (overlay) {
overlay.onclick = function() {
var activeModal = document.querySelector('.secondary.active'); // Находим активное модальное окно
if (activeModal) {
var ElementIndex = activeModal.getAttribute('data-index');
modalparent[ElementIndex].classList.remove('active');
html.classList.remove('sidebar-mobile-open');
overlay.classList.remove('active');
}
};
}
window.onload = function() {
setDataIndex(); // вызываем функцию для установки индексов
};
```
### Как это работает:
1. Добавляется обработчик события на оверлей.
2. При клике на оверлей мы проверяем, есть ли активное модальное окно.
3. Если да, то мы находим индекс этого окна и закрываем его, удаляя класс `active`.
4. Также удаляем классы у оверлей и HTML-документа, чтобы вернуть всё обратно в нормальное состояние.
Теперь, когда пользователь кликнет на затемнённую область оверлея, модальное окно закроется.