第一:看来你是混合的JavaScript一类的函数(这里有一个例子:What techniques can be used to define a class in JavaScript, and what are their trade-offs?)
例如,这就是等价类中的JavaScript:
function ClassName() {
var privateVar;
this.publicVar;
function privateFunction() {}
this.publicFunction = function() {};
}
你不应该在函数中包含一个函数,除非它具有含义(否则它会让其他人感到困惑),但是在给定的例子中你并不需要它。另外,我看不到创建新对象的原因。x
- 如果您在保存之前创建对象,则可以保存该值,因为对象只包含sample
的值,因此您可以编写类似这样的:
document.getElementById("submit").addEventListener("click", getElements);
function storeElements() {
var sampleValue = document.getElementById("sample").value;
localStorage.setItem('todays-values', sampleValue);
}
回到你的问题:
由于Kalamarico提到:如果你写新值到todays-values
将覆盖旧的值,你可以简单地加载从localStorage的所有旧值追加新的,并将它们写回localStorage。
您还应该注意localStorage只接受字符串,所以您应该将对象串联起来(请参阅localStorage.setItem)。
function appendValueToStorage(key, value) {
var values = JSON.parse(localStorage.getItem(key));
if (values === null) {
values = [];
}
values.push(value);
localStorage.setItem(key, JSON.stringify(values));
console.log(localStorage.getItem(key));
}
appendValueToStorage('todays-values', document.getElementById("sample").value);
该功能可以让你附加一些值,一键,你甚至可以重新包装这个功能,可以使用它在你的点击功能:
function onSubmitClick() {
appendValueToStorage('todays-values', document.getElementById("sample").value);
}
document.getElementById("submit").addEventListener("click", onSubmitClick);
随着console.log
命令,您可以查看localStorage的当前内容(您也可以使用开发人员工具进行检查 - 我发现Chrome的工作效果最好,在应用程序 - >本地存储选项卡下,您可以检查您的页面的localStorage)。
而不是覆盖您的本地存储项目,您应该将用户值存储在一个数组中。每次单击提交按钮时,您的脚本都应该获取本地存储项(它是一个数组),并将其附加到本地存储项并重写它。 – Terry
我已经考虑过了。尽管如此,如果你能发布一个真正有用的例子,它还是无法实现。 – Alonishka
我添加了一个示例如何读取和写回到localStorage:[见我的答案](http://stackoverflow.com/a/39812320/931485) –