1

我编写了一个 HTML 文件,它包含两个输入框,一个称为用户名,另一个称为密​​码。像这样的东西:

<input class='registerinput' id='registerusername' placeholder='Username'></input>
<input class='registerinput' id='registerpassword' placeholder='Password' type='password'></input>
<input class='registerinput' id='registerpasswordrepeat' placeholder='Repeat Password' type='password'></input>

我想使用这些代码将它存储到本地存储中。

if (document.getElementById('registerusername').value != "") {
    localStorage.username=document.getElementById('registerusername').value }
else if (document.getElementById('registerusername').value == "") {
    alert('You must enter a username.') } 
if (document.getElementById('registerpassword').value != "" && document.getElementById('registerpasswordrepeat').value == document.getElementById('registerpassword').value) {
    localStorage.password==document.getElementById('registerpassword'.value) }
else if (document.getElementById('registerpassword').value == "") {
    alert('You must enter a password') }
if (document.getElementById('registerpasswordrepeat').value != document.getElementById('registerpassword').value) {
    alert('The password did not match.') } 

一切正常,除了我无法将值保存在密码框中。是 HTML5 的安全性存储限制还是我的代码中的错误?谢谢。

4

2 回答 2

2

在回答之前,请注意,可能有浏览器不支持这个,你可以检测如下:

if(window.localStorage) {
    // do your local storage stuff here
} else {
    // do something else instead as localStorage is not available
}

除了这些信息,这里是你的错字:

localStorage.password==document.getElementById('registerpassword'.value) }

您在结束后缺少括号'

于 2013-09-06T03:16:00.240 回答
1

正如 jmort253 指出的那样,即使几乎所有浏览器都支持,检查浏览器是否支持也是明智之举localStorage(但真正需要使用您的应用程序的应用程序是不支持的应用程序......)。

并更改此行(双 = 和结束括号在错误的位置):

localStorage.password==document.getElementById('registerpassword'.value)

至:

localStorage.password = document.getElementById('registerpassword').value;

但是,更“正确”的语法localStorage是使用:

localStorage.setItem(key, value);

您使用以下方法检索:

var value = localStorage.getItem(key);

如果它不存在,它会为您提供值String(如果键不存在null,直接属性方式将一如既往地给出undefined)。

另一个更容易避免此类错误的提示是集中变量,例如:

var password1 = document.getElementById('registerpassword').value,
    password2 = document.getElementById('registerpasswordrepeat').value;

if (password1.length > 0 && password1 === password2) { ... }

通过这种方式,如果发生错误,您可以更轻松地发现(并且作为奖励,它也会更快一些)。

于 2013-09-06T05:31:58.530 回答