10

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

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

我想每秒添加多个 obj 实例,并给出一个时间键。如何附加 obj 而不是每次都更改它?

4

4 回答 4

20
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 中。

于 2013-11-11T09:22:01.090 回答
8

基本上,您必须检索对象,添加您的值,然后将其写回localStorage.

var obj = JSON.parse( localStorage.getItem('obj') ) || {};
obj[ timestamp ] = 'newvalue';
localStorage.setItem('obj', JSON.stringify(obj));
于 2013-11-11T09:20:35.283 回答
4

有两种选择:

  1. 而不是存储对象存储对象的列表/映射,然后添加一个元素,只需先执行getItem,然后推送/设置新元素,然后使用setItem.
  2. 使用日期作为键(例如localStorage.setItem('obj:' + x.time, x))和for (x in localStorage) {...}用于查找所有键的用途来存储对象。
于 2013-11-11T09:26:37.233 回答
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))
}
于 2013-11-15T14:25:17.747 回答