当我点击按钮到lolalStorage时,我想保存每个ID。
$("li").on("click", "a", function(){
var test = {"id": id, "name":name};
localStorage.setItem("test", JSON.stringify(test));
});
但是在页面重新加载时,我只能得到一个id。
答案 0 :(得分:4)
您在每次点击时都会覆盖相同的项目,因此您只存储最后一个项目。 test
是此值的关键。
您有两种选择:
1.-使用id
将信息存储在localStorage中,或使用该信息生成新对象。
使用id
作为localStorage密钥:
$("li").on("click", "a", function(){
localStorage.setItem(id, name);
});
这样你就不会知道你在localStorage中已经有哪个id了,所以之后检索信息很复杂。
2.-另一种选择是使用所有键值对象保存数组。您只会在localStorage中存储一个包含多个对象的对象:
$("li").on("click", "a", function(){
var test = localStorage.getItem("test");
var obj = [];
if(test){
obj= JSON.parse(test);
}
obj.push({"id": id, "name":name});
localStorage.setItem("test",JSON.stringify(obj));
});
然后检索信息就像这样简单:
var test = JSON.parse(localStorage.getItem("test")); // Returns array with multiple objects
答案 1 :(得分:2)
由于localStorage每次使用相同的密钥“test”,因此每次点击都会覆盖相同的值。尝试使用
localStorage.setItem(id, name);
答案 2 :(得分:0)
您可以将以前的本地存储保存到变量中,然后将其与新数据合并。像这样:
$("li").on("click", "a", function(){
/* get the previously saved local storage */
var previouslocalstorage = localStorage.getItem("test");
/*get the new test data */
var newtest = JSON.stringify({"id": id, "name":name});
/*join the previous and the new to localstorage */
localStorage.setItem("test", previouslocalstorage + newtest);
});
现在应该保存每组新的测试数据