Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5本地存储未存储密码框中的值_Javascript_Html_Local Storage - Fatal编程技术网

Javascript HTML5本地存储未存储密码框中的值

Javascript HTML5本地存储未存储密码框中的值,javascript,html,local-storage,Javascript,Html,Local Storage,我写了一个HTML文件,它包含两个输入框,一个叫做用户名,另一个叫做密码。大概是这样的: <input class='registerinput' id='registerusername' placeholder='Username'></input> <input class='registerinput' id='registerpassword' placeholder='Password' type='password'></input>

我写了一个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>

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

在回答之前,请注意,可能有一些浏览器不支持此功能,您可以通过以下方式检测此功能:

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) }

正如jmort253所指出的那样,在结束

后缺少括号,检查浏览器支持是明智的,即使几乎所有浏览器都支持
本地存储(但真正需要使用应用程序的浏览器是不支持的)

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

致:

但是,
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) { ... }

这样,如果发生错误,您可以更容易地发现错误(作为奖励,它也会更快一点)。

我使用警报检查了它,它返回了正确的用户名值,但返回的密码值为null。Strange.nitpick:将值存储到变量中并使用变量,这将使您的代码100%更易于阅读。您的赋值中有==而不是=,并且缺少结束参数。在localstorage中存储敏感信息(凭据是可用的最敏感数据之一:-))是不明智的。这就像将用户密码以明文形式存储在文件系统的某个位置。Hmm。我使用W3Schools的函数。。。好的,我有空的时候试试。现在我不能用这个iPad来编码了。但为什么用户名与我的代码一起工作?它为我返回正确的值。你知道吗,用户27731,你可能刚刚教了我一些新东西。令人惊讶的是,当我设置并重新加载
localStorage.name=“james”
时,该值仍然包含我的名字。。。我会编辑这篇文章,让它更。。。。对的但首先,你手边有IE吗(我在Mac电脑上)。这在IE中有效吗?刚刚在IE中测试,在IE10和IE8中有效。。。好啊编辑我的答案。嗨,肯,很好的答案!但是为什么说setItem/getItem更正确呢?(这肯定更符合我所看到的内容,但op的格式似乎在Chrome和IE中工作……虽然没有测试Firefox…)嗨@jmort253,谢谢。这只是细节:)我之所以这么说,是因为它更干净,在正式文件中也有概述。我引用了正确的话,因为其他方法没有错,也会起作用,但“促进”(?)官方标准的采用(IMO)并没有坏处:)
localStorage.setItem(key, value);
var value = localStorage.getItem(key);
var password1 = document.getElementById('registerpassword').value,
    password2 = document.getElementById('registerpasswordrepeat').value;

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