繁体   English   中英

无法通过在模态外部单击来关闭模态框

[英]Can't close modal box by clicking outside of the modal

我有以这种方式打开的模式框。

<div class="modal-open" data-modal="modal-window-one">Modal1</div>

var btn = document.getElementsByClassName("modal-open");
for (var i = 0; i < btn.length; i++) {
var thisBtn = btn[i];
thisBtn.addEventListener("click", function(){
var modal = document.getElementById(this.dataset.modal);

modal.className = "modal-reveal";  
}, false);
}

我试图通过单击已打开的该模式之外的任何位置来关闭该模式。

这是我的代码。

window.addEventListener('mouseup', function(event){
var box = document.getElementsByClassName('modal-reveal');
if (event.target != box && event.target.parentNode != box){
    box.className = "modal-hidden"; 
}
});

我在这里做错了什么? 没有控制台错误,我不知道为什么此代码无法正常工作。

这是我的小提琴: https : //jsfiddle.net/mspsys/z46woxv0/

您应该更改此行:

var box = document.getElementsByClassName('modal-reveal');

像这样:

var box = document.getElementsByClassName('modal-reveal')[0];

.getElementsByClassName返回HTMLCollection 您需要获得一个要素。

像这样更改代码

window.addEventListener('mouseup', function(event){
    var box = document.getElementsByClassName('modal-reveal');
    if (event.target != box && event.target.parentNode != box){
        box[0].className = "modal-hidden"; 
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM