我已将数组存储在本地存储中。当我访问同一个函数中的所有值时,我得到所有的值但是当我尝试在函数外部访问它时,我只得到最后一个推送的值。如何检索函数外的所有值?
storeGrabID(10);
storeGrabID(7);
storeGrabID(9);
storeGrabID(4);
//storing function
function storeGrabID(id)
{
var list = new Array();
list.push(id);
localStorage.setItem('offerID',JSON.stringify(list));
console.log(localStorage.getItem('offerID'));//getting all the values
}
console.log(localStorage.getItem('offerID'));//getting the last pushed value i.e. 4
答案 0 :(得分:0)
这是正常的,因为每次调用storeGrabID都会创建另一个列表新数组,您可以在其中添加参数传递的元素。
每次只存储一个元素(最后一个),并且在您存储在本地存储中的函数中使用此元素。
解决您问题的两种解决方案: 1)每次调用函数时从本地存储中获取数组* 优点:运行安全 不方便的是,无需从本地存储中加载
,即可显示阵列中的内容storeGrabID(10);
storeGrabID(7);
storeGrabID(9);
storeGrabID(4);
//storing function
function storeGrabID(id)
{
var list = localStorage.getItem('offerID');
list.push(id);
localStorage.setItem('offerID',JSON.stringify(list));
console.log(localStorage.getItem('offerID'));//getting all the values
}
2)另一种方式但不太合适的是将列表放在数组之外 优点:快速实施 不方便:不太合适(全局变量)
var list = new Array();
storeGrabID(10);
storeGrabID(7);
storeGrabID(9);
storeGrabID(4);
//storing function
function storeGrabID(id)
{
list.push(id);
localStorage.setItem('offerID',JSON.stringify(list));
console.log(localStorage.getItem('offerID'));//getting all the values
}
console.log(localStorage.getItem('offerID'));//getting the last pushed value i.e