【问题标题】:Button onclick event executing although button is not clicked [JavaScript]尽管未单击按钮,但按钮 onclick 事件正在执行 [JavaScript]
【发布时间】:2020-01-04 12:03:46
【问题描述】:

我有一个验证登录页面,如果提交了正确的凭据,则用户将被重定向到另一个页面,创建一个会话,并且登录按钮在每个页面上都更改为注销,并添加了一个 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;,没有()

标签: javascript html session


【解决方案1】:

替换下面一行

loginBtn.onclick = logout();

loginBtn.onclick = logout;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2020-10-18
    • 2015-11-19
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多