[英]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.