在本地存储中附加对象

时间:2013-11-11 09:16:51

标签: javascript local-storage

我使用以下内容将对象存储在本地存储中:

 localStorage.setItem('obj', JSON.stringify(obj));

我想每秒添加一个obj的多个实例,给出一个时间键。我怎样才能追加obj而不是每次都改变它?

4 个答案:

答案 0 :(得分:11)

var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];

var newItem = 
{
 'product-name': itemContainer.find('h2.product-name a').text(),
 'product-image': itemContainer.find('div.product-image img').attr('src'),
 'product-price': itemContainer.find('span.product-price').text()
};

 oldItems.push(newItem);

 localStorage.setItem('itemsArray', JSON.stringify(oldItems));

您可能还需要考虑使用对象而不是数组,并使用产品名称作为键。这样可以防止在LocalStorage中显示重复的条目。

答案 1 :(得分:3)

有两种选择:

  1. 不是存储对象存储对象的列表/映射,而是先添加元素,然后执行getItem,然后按下/设置新元素,然后使用setItem
  2. 使用日期作为键(例如localStorage.setItem('obj:' + x.time, x))和使用for (x in localStorage) {...}来存储对象以查找所有键。

答案 2 :(得分:3)

function store() 
{
    var person=new Object();
str = [str stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
    person.firstname="John";
    person.lastname="Doe";
    person.age=50;
    person.eyecolor="blue";
    localStorage.setObj("temp", person);
    var obj=localStorage.getObj("temp");
    for(var i in obj)
    alert(i+"--"+obj[i]);
}
Storage.prototype.setObj = function(key, obj) {
     return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function(key) {
     return JSON.parse(this.getItem(key))
}

答案 3 :(得分:1)

基本上你必须检索对象,添加你的值,然后把它写回localStorage

var obj = JSON.parse( localStorage.getItem('obj') ) || {};
obj[ timestamp ] = 'newvalue';
localStorage.setItem('obj', JSON.stringify(obj));