繁体   English   中英

尽管未单击按钮,但按钮 onclick 事件仍在执行 [JavaScript]

[英]Button onclick event executing although button is not clicked [JavaScript]

我有一个登录页面进行验证,如果提交了正确的凭据,则用户将被重定向到另一个页面,创建一个会话,并且登录按钮更改为每个页面上的注销,并添加一个 onclick 事件侦听器。 事件侦听器清除会话。

出于某种原因,当用户成功登录并重定向时,会创建会话,但如果刷新页面或用户导航到另一个页面,则会话会被清除,甚至无需单击注销按钮。 似乎无法弄清楚这是为什么...

这是代码:

<body>
    <!--Depending on sessions hide login and show logout / vice versa -->
    <div class="Header-nav-inner">
        <a id="login" href="/login" class="Header-nav-item Header-nav-item--active" data-test="template-nav">Login</a>
    </div>
    <form onsubmit="validate()">
        <h3>Email</h3><input type="email" id="email" /><br />
        <h3>Password</h3><input type="password" id="password" />
        <input type="submit" value="Login">
    </form>
</body>

<script>
    if (key[1] == document.getElementById('email').value
                        && key[2] == document.getElementById('password').value) {
                        alert('correct')
                        //Set session for email, name and date of birth
                        sessionStorage.setItem('email', key[1])
                        sessionStorage.setItem('name', key[3])
                        sessionStorage.setItem('dateOfBirth', key[4])
                        //window.location.replace("somewhere")
                    } else {
                        c += 1;
                        if (c == results.data.length) {
                            alert('Wrong username or password!')
                        }
                    }

    let sessionEmail = sessionStorage.getItem('email')
    let sessionName = sessionStorage.getItem('name')
    let sessionBirth = sessionStorage.getItem('dateOfBirth')

    var loginBtn = document.getElementById("login");
    if (sessionStorage.getItem('email') != null) {
        loginBtn.innerHTML = "LOGOUT";
        loginBtn.onclick = logout();
    } else {
        loginBtn.innerHTML = "LOGIN"
    }

    function logout() {
        sessionStorage.clear();
    }
</script>

替换以下行

loginBtn.onclick = logout();

loginBtn.onclick = logout;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM