检查localStorage JSON对象中是否存在userinput值?

时间:2017-12-15 10:20:46

标签: javascript json local-storage user-input key-value

我正在为我的网站制作登录系统。管理使用localStorage进行注册和登录工作(因此它将每个帐户的数据存储在数组中)

但是,如果他们错误地输入用户名或者不存在的用户名,我希望它显示错误[那么不在localStorage中]。

我设法为密码做了这个,输入的用户名是正确的,这是密码检查的代码:

else if (passwordLogin !== parse.password) {
    message.innerHTML = "Incorrect account information!";
    return;
}

^其中 passwordLogin 是他们在密码字段中输入的内容, parse 是一个解析localstorage用户名的函数,因此: JSON.parse(localStorage [ usernameLogin] - usernameLogin 是他们在用户名字段中输入的内容

现在我正在尝试为用户名执行相同操作。到目前为止,这是我最好的代码:

if (localStorage[usernameLogin] === undefined) {
    message.innerHTML = "No such ninja username exists!"; 
} 

所以 usernameLogin 是他们在用户名字段中输入的内容。 我正在检查他们在localStorage中的输入并检查它是否是 undefined 。在localStorage中,每个帐户的是用户名,是一个包含所有详细信息的数组:{“username”:“Jordan”,“password”:“asd “} [这里的关键只是普通的乔丹]

您注意到此用户名和传递检查位于if和else if循环中。 if(用户名检查)不执行任何操作,但密码检查的代码在else if中有效(仅当输入的用户名存在且密码不匹配时才有效)

也许是

=== undefined

不正确。任何想法都赞赏:)

2 个答案:

答案 0 :(得分:0)

检查undefinedempty condtions就足够了。

localStorage.hasOwnProperty('usernameLogin') &&
typeof localStorage.usernameLogin !== 'undefined' &&
localStorage.usernameLogin !== ''

您可以在解析值后检查其中的值来添加条件。

typeof JSON.parse(localStorage.usernameLogin) === 'object' &&
typeof JSON.parse(localStorage.usernameLogin).password === 'string'
JSON.parse(localStorage.usernameLogin).password === 'yourpassword'

答案 1 :(得分:-1)

尝试

if (!localStorage.getItem(usernameLogin)) {
    message.innerHTML = "No such ninja username exists!";    
}

if (localStorage[usernameLogin] === undefined) {
    message.innerHTML = "No such ninja username exists!";    
}

确保usernameLogin变量包含字符串。