我试图做一个简单的模式弹出,当我点击注册按钮。通过将display: none
更改为display: block
可以打开模式,但是无法通过单击<span>
标记使其关闭。<span> onclick事件不发射
单击事件未在<span>
上触发,但在点击容器外部时触发。我不知道为什么。我究竟做错了什么?
这里的HTML:
<a id="modalBtn" href="#0">Get started</a>
<div id="modalPopup" class="modal">
<div class="modal-content">
<span class="close">×</span>
<div>
<input id="email" type="email" placeholder="Email">
<input id="password" type="password" placeholder="Password">
<button id="quickstart-sign-in" href="#">Log in</button>
<button id ="quickstart-sign-up" href="#">Sign up</button>
</div>
</div>
</div>
而且JS:
var modalPopup = document.getElementById('modalPopup');
var modalBtn = document.getElementById('modalBtn');
var close = document.getElementsByClassName('close');
// Opens modal on modalBtn click
modalBtn.onclick = function() {
modalPopup.style.display = "block";
}
// Closes the modal on 'X' click
close.onclick = function() {
modalPopup.style.display = "none";
console.log('wtf why is this not working')
}
// Closes the modal on outside window click
window.onclick = function(event) {
if (event.target == modalPopup) {
modalPopup.style.display = "none";
}
}
这里有一个小提琴:https://jsfiddle.net/3n1mpaex/1/
很抱歉,如果这已被问过,我搜索了一下周围和couldn很难找到我需要的答案。谢谢!