我在 Javascript 中有一个函数:
var a = [];
function SaveDataToLocalStorage(data)
{
var receiveddata = JSON.stringify(data);
a.push(receiveddata);
alert(a);
localStorage.setItem('session', a);
}
data 参数是一个 JSON 对象。
但每次我点击按钮时,它都会覆盖我本地存储中的数据。
有人知道怎么做吗?
最佳答案
您需要采取几个步骤才能将此信息正确存储在 localStorage 中。然而,在我们开始编写代码之前,请注意 localStorage(在当前时间)不能保存除字符串之外的任何数据类型。您将需要序列化该数组以进行存储,然后将其解析出来以对其进行修改。
第 1 步:
只有在您的 localStorage session
变量中还没有存储序列化数组时,才应该运行下面的第一个代码片段。
为确保您的 localStorage 设置正确并存储数组,请先运行以下代码段:
var a = [];
a.push(JSON.parse(localStorage.getItem('session')));
localStorage.setItem('session', JSON.stringify(a));
上述代码只应运行一次,并且仅当您尚未在 localStorage session
变量中存储 array 时。如果您已经在执行此操作,请跳至第 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));
}
这应该会为您处理其余的事情。当你解析出来时,它会变成一个对象数组。
希望这会有所帮助。
https://stackoverflow.com/questions/16083919/