JavaScript - "Identifier has already been declared"

标签 javascript html

使用 localStorage 在 HTML 上获取注册/登录表单时遇到问题。作为我作业的一部分,我不能使用数据库或 php,即使它们更容易。具体来说,问题发生在我的提交功能期间。

返回的语法错误是“Identifier registerUser has already been declared”,并在控制台中突出显示 const reponse = processUser (username.value, password.value)

这是我的 JavaScript 代码:

//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>

任何帮助将不胜感激,因为这非常令人沮丧!

最佳答案

2 个变量已同名 registeredUser

const registeredUser        = window.localStorage.getItem("username", 
username);
const registeredUser        = window.localStorage.getItem("password", 
password);

因此,我没有尝试使用 registeredUser,而是将其更改为 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;

同时使用=== 代替== reasons why

关于JavaScript - "Identifier has already been declared",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52591189/

相关文章:

Javascript 对象事件处理程序范围,最佳实践?

javascript - 下拉列表在不需要的时间关闭

asp.net - ASP.NET AJAX 中的 $create 函数是什么?

javascript - 如何在 typescript 中使用 bigint 初始值设定项创建类似枚举的对象?

javascript - 当我将元素分配给一个类时,为什么这个 addEventListener 不起作用?

javascript - 有没有办法在 google-cloud-firestore 的对象数组中搜索具有特定字段的对象

css - 使用 CSS 动态调整 DIV 大小

html - Bootstrap/Jasny "offcanvas"侧边栏菜单卡住页面内容(即防止滚动)

html - 在 WTFORM 属性中设置 MIN LENGTH

javascript - 当我从输入字段中移除光标时的事​​件