Javascript 模态不';不要在外部单击时隐藏它

Javascript 模态不';不要在外部单击时隐藏它,javascript,jquery,css,bootstrap-modal,Javascript,Jquery,Css,Bootstrap Modal,我已经创建了一个模式,它工作得很好,但当单击外部时,它不再隐藏。我该怎么做?任何人都请帮助我。谢谢 //获取模式 var modal=document.getElementById('myModal'); //获取打开模式对话框的按钮 var btn=document.getElementById(“myBtn”); //获取关闭模态的元素 var span=document.getElementsByClassName(“关闭”)[0]; //当用户单击该按钮时,打开模式对话框 btn.on

我已经创建了一个模式,它工作得很好,但当单击外部时,它不再隐藏。我该怎么做?任何人都请帮助我。谢谢

//获取模式
var modal=document.getElementById('myModal');
//获取打开模式对话框的按钮
var btn=document.getElementById(“myBtn”);
//获取关闭模态的元素
var span=document.getElementsByClassName(“关闭”)[0];
//当用户单击该按钮时,打开模式对话框
btn.onclick=函数(){
modal.style.display=“块”;
}
//当用户单击(x)时,关闭模式对话框
span.onclick=函数(){
modal.style.display=“无”;
}
//当用户单击模式之外的任何位置时,将其关闭
window.onclick=函数(事件){
如果(event.target==模态){
modal.style.display=“无”;
}
}
Post

请参考此代码,在模式外单击关闭模式

span标记中有错误,因为span在html代码中不可用

//获取模式
var modal=document.getElementById('myModal');
//获取打开模式对话框的按钮
var btn=document.getElementById(“myBtn”);
//当用户单击该按钮时,打开模式对话框
btn.onclick=函数(){
modal.style.display=“块”;
}
//当用户单击模式之外的任何位置时,将其关闭
window.onclick=函数(事件){
如果(event.target==模态){
modal.style.display=“无”;
}
}
body{font-family:Arial、Helvetica、sans-serif;}
/*模态(背景)*/
.莫代尔{
显示:无;/*默认情况下隐藏*/
位置:固定;/*保持原位*/
z指数:1;/*位于顶部*/
填充顶部:100px;/*框的位置*/
左:0;
排名:0;
宽度:100%;/*全宽*/
高度:100%;/*全高*/
溢出:自动;/*根据需要启用滚动*/
背景色:rgb(0,0,0);/*回退色*/
背景色:rgba(0,0,0,0.4);/*黑色w/不透明度*/
}
/*模态内容*/
.模态内容{
位置:相对位置;
背景色:#fefe;
保证金:自动;
填充:0;
边框:1px实心#888;
宽度:80%;
盒影:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
-webkit动画名称:animatetop;
-webkit动画持续时间:0.4s;
动画名称:animatetop;
动画持续时间:0.4s
}
Post
情态动词

您可以使用stopPropagation()方法打开和关闭模型

请查看下面的更新代码,希望这将有助于/解决您的问题

Post
接近
.modal{宽度:300px;高度:300px;背景:#f5;显示:无;}
.close{float:right}
//获取模态
var modal=document.getElementById('myModal');
//获取打开模式对话框的按钮
var btn=document.getElementById(“myBtn”);
//获取关闭模态的元素
var span=document.getElementsByClassName(“关闭”)[0];
//当用户单击该按钮时,打开模式对话框
btn.onclick=函数(事件){
event.stopPropagation();
modal.style.display=“块”;
}
//当用户单击(x)时,关闭模式对话框
span.onclick=函数(){
modal.style.display=“无”;
}
//当用户单击模式之外的任何位置时,将其关闭
window.onclick=函数(事件){
如果(event.target!=模态){
modal.style.display=“无”;
}
}

您可以使用
元素.contains(event.target)
检查单击是在元素上还是在其子元素上。您还可以使用
event.target=“myBtn”
以确保单击按钮打开模式

.modal{
宽度:50%;
身高:50%;
位置:固定;
最高:25%;
左:25%;
边框:1px纯黑;
背景色:淡蓝色;
}
Post×;
情态动词
//获取模态
var modal=document.getElementById('myModal');
//获取打开模式对话框的按钮
var btn=document.getElementById(“myBtn”);
//获取关闭模态的元素
var span=document.getElementsByClassName(“关闭”)[0];
//当用户单击该按钮时,打开模式对话框
btn.onclick=函数(){
modal.style.display=“块”;
}
//当用户单击(x)时,关闭模式对话框
span.onclick=函数(){
modal.style.display=“无”;
}
//当用户单击模式之外的任何位置时,将其关闭
window.onclick=函数(事件){
if(event.target.id!=“myBtn”&&!modal.contains(event.target)){
modal.style.display=“无”;
}
}

关闭按钮在哪里?