使用Javascript时,localStorage值始终为空
我使用一个函数将值提交到使用Javascript时,localStorage值始终为空,javascript,jquery,html,Javascript,Jquery,Html,我使用一个函数将值提交到localStorage,另一个函数检索它们并将它们放入网页上各自的输入字段中 我的问题有两方面。retrieve()函数似乎没有任何作用;输入字段中甚至没有Null。其次,我希望onSubmit()函数实际存储输入值 这是两个功能。如您所见,我声明元素和s_元素,并尝试检索它们。但是什么也没发生 function retrieve() { if (typeof(Storage) != "undefined") { var elements = d
localStorage
,另一个函数检索它们并将它们放入网页上各自的输入字段中
我的问题有两方面。retrieve()
函数似乎没有任何作用;输入字段中甚至没有Null
。其次,我希望onSubmit()
函数实际存储输入值
这是两个功能。如您所见,我声明元素
和s_元素
,并尝试检索它们。但是什么也没发生
function retrieve() {
if (typeof(Storage) != "undefined") {
var elements = document.getElementsByTagName('input');
var s_elements = document.getElementsByTagName('select');
for (var i=0; i<elements.length; i++) {
if (elements[i].getAttribute("type") != "submit" && elements[i].getAttribute("type") != "button") {
e = elements[i];
e.setAttribute("value", localStorage[e.getAttribute("name")]);
}
}
for (var i=0; i<s_elements.length; i++) {
s_e = s_elements[i];
s_e.setAttribute("value", localStorage[s_e.getAttribute("name")]);
}
}
}
function onSubmit() {
var elements = document.forms["forsendur"].getElementsByTagName("input");
var s_elements = document.forms["forsendur"].getElementsByTagName("select");
for (var i=0; i<elements.length; i++) {
if (elements[i].getAttribute("type") != "submit") {
e = elements[i];
localStorage[e.getAttribute("name")] = e.getAttribute("value");
}
}
for (var i=0; i<s_elements.length; i++) {
s_e = elements[i];
localStorage[s_e.getAttribute("name")] = s_e.getAttribute("value");
}
}
编辑u检索()函数现在可以工作了。我修正了很多打字错误。现在只剩下一个问题。问题的症结在于您试图使用HTML属性而不是DOM属性来获取输入值 HTML属性如下所示:
可以如下方式访问DOM属性:
document.querySelector('a')。href='0http://example.com“
当浏览器解析站点的HTML文本时,会读取HTML属性。浏览器将创建一个表示html元素的DOM对象,然后以类似以下方式设置属性:
var a = document.createElement('a');
a.setAttribute('href', 'http://example.com')
通常会有与HTML属性等价的DOM属性,比如我上面描述的.href
属性
这两件事之间的区别(除了访问它们的方式)是,加载HTML页面后的大多数事件都会修改DOM属性,而不是HTML属性-例如,键入输入将更改相应DOM对象上的.value
属性,但不会修改HTML属性:
-除非您明确设置,否则HTML属性值将保持“hello”
。同时,在输入时,DOM属性.value
将反映输入中的文本
要在代码中给出一个特定的示例,您需要更改行
localStorage[e.getAttribute(“name”)]=e.getAttribute(“value”)代码>我们也可以看到输入的html吗?或者Javascript没有块作用域。您正在重用内部循环中的i
变量。另外,添加一些变量,这样您就不必一直键入长属性访问,如elements[i].getAttribute(“name”)
,这将有助于提高可读性。很抱歉,复制粘贴时出现缩进错误。我将编辑代码以确保可读性。@Gudmundur“retrieve()函数现在可以工作了…现在只剩下一个问题”-如果retrieve可以工作,那么显然存储也可以工作。那么剩下的问题是什么..?存储仍然存储“Null”值。我希望它们存储字段的输入值。JSFIDLE马上就要来了
<input type="button" class="button2" value="Last session" onClick="retrieve();">
var a = document.createElement('a');
a.setAttribute('href', 'http://example.com')