我有2个按钮,一个用于登录,一个用于登录。我创建了2个不同的模式框,其中包含登录和登录的表单。不幸的是,出于某种原因,只要我添加第二个模态框,第一个模型框就会在我看到它外面的单击时立即关闭。我已经创建了一个codepen,所以你可以自己看看。
https://codepen.io/BozhidarSK/pen/zRmKbG
如果您单击“注册”并在之后的任何其他位置单击,则模式框将关闭,不幸的是,单击“登录”时不会发生这种情况。
var logInModal = document.getElementById('logInModal');
var logInButton = document.getElementById("logIn");
logInButton.onclick = function() {
logInModal.style.display = "block";
}
window.onclick = function(event) {
if (event.target == logInModal) {
logInModal.style.display = "none";
}
}
var signUpModal = document.getElementById('signUpModal');
var signUpButton = document.getElementById("signUp");
signUpButton.onclick = function() {
signUpModal.style.display = "block";
}
window.onclick = function(event) {
if (event.target == signUpModal) {
signUpModal.style.display = "none";
}
}
.modal {
display: none;
position: fixed;
z-index: 1;
padding-top: 100px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
.modal-content {
background-color: #fefefe;
margin: auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
<ul>
<li id='signUp'>Sign Up</li>
<li id="logIn">Log In</li>
</ul>
<div id="logInModal" class="modal">
<div class="modal-content">
sssssss
</div>
</div>
<div id="signUpModal" class="modal">
<div class="modal-content">
sssssss
</div>
</div>
答案 0 :(得分:2)
您的第一个事件监听器被覆盖。解决问题。
请尝试以下代码。
var logInModal = document.getElementById('logInModal');
var logInButton = document.getElementById("logIn");
logInButton.onclick = function() {
logInModal.style.display = "block";
}
var signUpModal = document.getElementById('signUpModal');
var signUpButton = document.getElementById("signUp");
signUpButton.onclick = function() {
signUpModal.style.display = "block";
}
window.onclick = function(event) {
if (event.target == signUpModal) {
signUpModal.style.display = "none";
} else if (event.target == logInModal) {
logInModal.style.display = "none";
}
}
这是更新后的代码集link。