JavaScript onClick:我必须单击两次才能显示模态

JavaScript onClick:我必须单击两次才能显示模态,javascript,jquery,button,onclick,Javascript,Jquery,Button,Onclick,我正在尝试向具有动态变化id的按钮元素添加单击事件。但是,要实际显示弹出窗口,我必须单击按钮两次。。。我知道它是这样发生的,因为我对点击事件做了一些错误的事情。但我不知道如何解决这个问题。 你能?我在为这件事发愁 先谢谢你 //获取模式 功能getPopup(场馆标识){ var modal=document.getElementById('myModal'); var btn=document.getElementById(“myBtn”+场馆id); var VINCE=document.

我正在尝试向具有动态变化id的按钮元素添加单击事件。但是,要实际显示弹出窗口,我必须单击按钮两次。。。我知道它是这样发生的,因为我对点击事件做了一些错误的事情。但我不知道如何解决这个问题。 你能?我在为这件事发愁

先谢谢你

//获取模式
功能getPopup(场馆标识){
var modal=document.getElementById('myModal');
var btn=document.getElementById(“myBtn”+场馆id);
var VINCE=document.getElementById(“title”+场馆id).innerHTML;
document.getElementById(“eventTitle”).innerHTML=“+Vincement+”;
var span=document.getElementsByClassName(“关闭”)[0];
btn.onclick=函数(){
modal.style.display=“块”;
}
span.onclick=函数(){
modal.style.display=“无”;
}
window.onclick=函数(事件){
如果(event.target==模态){
modal.style.display=“无”;
}
}
}
函数sentpoop(){
document.getElementById('myModal').style.display=“无”;
var modal=document.getElementById('thanksMessage');
var span=document.getElementById(“关闭”);
modal.style.display=“块”;
span.onclick=函数(){
modal.style.display=“无”;
}
window.onclick=函数(事件){
如果(event.target==模态){
modal.style.display=“无”;
}
}
}

您需要单击两次的原因是:

btn.onclick = function() {
    modal.style.display = "block";
}
位于getPopUp函数内,只有单击按钮时才会调用该函数。因此,当您单击一次时,它会将onclick函数设置为button

您需要更改此行以立即执行操作,因此在getPopUp中,您需要执行以下操作:

modal.style.display = "block";
没有btn.onclick

弹出窗口中的另一个按钮也是如此,因为您将遇到相同的问题


我建议您去掉HTML中的内联onclick属性,使用不引人注目的javascript编写风格来避免错误。

从getPopup()中删除window.onclick并检查!此window.onclick首次将模式显示设置为“无”。因此,您需要再次单击该按钮。请发布一个最小、完整且可验证的示例,该按钮是否在您的模型中?你能不能也发一段你的html?编辑了我的question@Pat我试着从getPopup()中删除window.onclick,但没有用。谢谢@klikas!我知道这与函数内部调用的事件有关。。但不知怎的,我看不出这个错误!再次非常感谢!