我在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:
仅当尚未将序列化数组存储在localStoragesession变量中时,才应运行下面的第一个代码段。 为确保您的localStorage正确设置并存储阵列,请首先运行以下代码段:
session
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)); }
这应该为您处理其余的工作。当您解析它时,它将成为一个对象数组。
希望这可以帮助。