JavaScript-“已声明标识符" [英] JavaScript - "Identifier has already been declared"
问题描述
使用localStorage使注册/登录表单在HTML上工作时存在问题.作为作业的一部分,即使这些数据库或php较容易,我也无法使用它们.具体来说,问题是在我的提交功能期间发生的.
Having an issue with getting a register/ login form to work on HTML using localStorage. As part of my assignment, I cannot use databases or php even though these are easier. Specifically the issue is occurring during my submit function.
返回的语法错误是标识符registerUser已被声明",并在控制台中突出显示 const reponse = processUser(用户名.值,密码.值)
.
The syntax error coming back is "Identifier registerUser has already been declared", and highlights const reponse = processUser (username.value, password.value)
in the console.
这是我的JavaScript代码:
Here's my JavaScript code:
//setup form
window.addEventListener("DOMContentLoaded", setupForm);
function setupForm() {
const form = document.getElementById("login");
form.addEventListener("submit", handleSubmit);
}
//handle Submit
function handleSubmit(event) {
event.preventDefault();
const {
Username,
Password,
login_type,
result
} = event.target;
const processUser = login_type.value == "register" ? registerUser : loginUser;
const response = processUser(username.value, password.value);
result.innerHTML = response;
}
//register new user
function registerUser(username, password) {
window.localStorage.setItem("username", username);
window.localStorage.setItem("password", password);
return 'New user ${username} now registered!';
}
//login existing user
function loginUser(username, password) {
const registeredUser = window.localStorage.getItem("username", username);
const registeredUser = window.localStorage.getItem("password", password);
const validUser = username == registeredUser;
const validPassword = password == registeredUser;
if (validUser && validPassword) {
return 'User ${username} successfully logged-in!';
}
//error form for incorrect username or password
else if (!validUser) return 'Incorrect username or password';
}
HTML表单:
<fieldset>
<form id="login" action="submit" method="post">
<legend><b>Login here!</b></legend><br />
<div>
<label for="username">Username:</label>
<input id="username" type="text" name="username" required />
</div>
<div>
<label for="password">Password:</label>
<input id="password" type="password" name="Password" required />
</div>
</fieldset>
<span>
<input id="login" type="hidden" name="login_type" value="login" checked="checked"></input>
<!--Hidden for the purposes of my script working-->
<input type="submit" value="Submit" /><br /><br />
<output name="result"></output>
</fieldset>
</span>
任何帮助将不胜感激,因为这非常令人沮丧!
Any help would be greatly appreciated as this is very frustrating!
推荐答案
2个变量已经具有相同的名称 registeredUser
.
2 variables have the same name already registeredUser
.
const registeredUser = window.localStorage.getItem("username",
username);
const registeredUser = window.localStorage.getItem("password",
password);
所以我没有尝试使用 registeredUser
,而是将其更改为registeredPassword
So rather than try to use registeredUser
, i've changed it to registeredPassword
//login existing user
function loginUser(username, password){
const registeredUser = window.localStorage.getItem("username",
username);
const registeredPassword = window.localStorage.getItem("password",
password);
const validUser = username === registeredUser;
const validPassword = password === registeredPassword;
也使用 ===
代替 ==
查看全文