添加第二个模态框后,模态框停止正常工作

时间:2018-02-26 03:24:13

标签: javascript

我有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>

1 个答案:

答案 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