我有一个JavaScript函数:
var a = [];
function SaveDataToLocalStorage(data)
{
var receiveddata = JSON.stringify(data);
a.push(receiveddata);
alert(a);
localStorage.setItem('session', a);
}
数据参数是一个JSON对象。
但每次我点击它覆盖在我的localStorage数据的按钮。
有人知道怎么做这个吗?
有你需要采取妥善存放您的localStorage此信息仅几步之遥。 之前,我们坐下来代码但是,请注意,localStorage的(在当前时间) 不能包含任何数据类型,除了字符串。 您需要序列化存储阵列,然后分析它退了出去进行修改它。
步骤1:
如果你是不是已经存储您的localStorage的序列化阵列下面片段中的第一个代码只应运行session
变量。
为了确保您的localStorage是正确安装和存储阵列,首先运行下面的代码片段:
var a = [];
a.push(JSON.parse(localStorage.getItem('session')));
localStorage.setItem('session', JSON.stringify(a));
上面的代码应该只运行一次且仅当您尚未存储在localStorage的数组 session
变量。 如果你已经这样做了跳到第2步。
第2步:
修改你的功能,如下所示:
function SaveDataToLocalStorage(data)
{
var a = [];
// Parse the serialized data back into an aray of objects
a = JSON.parse(localStorage.getItem('session'));
// Push the new data (whether it be an object or anything else) onto the array
a.push(data);
// Alert the array value
alert(a); // Should be something like [Object array]
// Re-serialize the array back into a string and store it in localStorage
localStorage.setItem('session', JSON.stringify(a));
}
这应该照顾其余的为您服务。 当你解析出来,它将成为对象的数组。
希望这可以帮助。
截至目前,你可以在localStorage的只能存储字符串值 。 你需要序列化数组对象,然后将其保存在localStorage的。
例如:
localStorage.setItem('session', a.join('|'));
要么
localStorage.setItem('session', JSON.stringify(a));
把一整个阵列成一个localStorage的条目是非常低效的:整个事情需要被重新编码,每次添加一些东西到阵列或更改一个条目的时间。
一个替代方案是使用http://rhaboo.org存储任何JS对象,然而深度嵌套,使用对每个终端值的单独的localStorage条目。 阵列被恢复更忠实地,包括非数字属性和各种类型的稀疏,对象原型/构造被恢复在标准情况下,且API可笑简单:
var store = Rhaboo.persistent('Some name');
store.write('count', store.count ? store.count+1 : 1);
store.write('somethingfancy', {
one: ['man', 'went'],
2: 'mow',
went: [ 2, { mow: ['a', 'meadow' ] }, {} ]
});
store.somethingfancy.went[1].mow.write(1, 'lawn');
顺便说一句,我写的。
有一件事我可以建议你是扩展存储对象来处理对象和数组。
localStorage的只能处理字符串,这样就可以达到使用这些方法
Storage.prototype.setObj = function(key, obj) {
return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function(key) {
return JSON.parse(this.getItem(key))
}
使用它的每一个值将被转换为上一套JSON字符串和解析的GET
var arr = [ 'a', 'b', 'c'];
arr.push('d'); // insert as last item