【问题标题】:Adding elements to object for localStorage为 localStorage 添加元素到对象
【发布时间】:2014-11-14 17:29:22
【问题描述】:

我有一个动态列表视图,显示商店的各种优惠。我希望用户在从列表视图中选择时能够保存这些优惠,以便使用 localStorage 生成已保存的优惠功能。

我已经设法通过在列表视图中选择优惠来节省 1 个优惠。

在选择列表视图行时,它会从该特定选择中获取数据属性并填充一个数组,然后将其传递给 localStorage。

JS

var offerObject = '';                                                                                                                                                                           
$("#offers ul").on("click", ">li", function(event, ui) {                                                                                                                                                                           
    var offertitle = $(this).closest('li').attr('data-offer-title'); 
    var offerdesc = $(this).closest('li').attr('data-offer-desc');
    var offerexpiry = $(this).closest('li').attr('data-offer-expiry'); 

    offerObject= {"offer":[ 
        { 
            'offertitle': offertitle, 
            'offerdesc': offerdesc,
            'offerexpiry': offerexpiry
        }
    ]};
    localStorage.setItem('offerObject', JSON.stringify(offerObject));
});

我正在尝试在进行另一个列表视图选择时添加到 offerObject 变量,以生成保存的报价数组。

目前,如果我进行另一个选择,该报价将被替换为该列表行中新选择的属性。

从类似的问题中,我了解到我需要使用 .push 来执行此操作?任何建议都将不胜感激,因为我很难做到。

【问题讨论】:

标签: javascript jquery local-storage


【解决方案1】:

是的,这通常使用 .push 完成。 步骤如下:

//create an offer
var offer = {
        'offertitle': offertitle, 
        'offerdesc': offerdesc,
        'offerexpiry': offerexpiry
};
// Add offer to the array of offers and save it
var offers = JSON.parse(localStorage.getItem('offers'));
// if offers is null just create an empty array []
if (offers === null || offers === undefined) {
    offers = [];
}
offers.push(offer);
localStorage.setItem('offers', JSON.stringify(offers));

【讨论】:

  • 感谢您的帮助。尽管我收到“无法读取属性‘push’ of null”错误,但我已经越来越近了:(
  • 是的,第一次为空,必须新建数组。我编辑了我的答案。希望这会有所帮助: if ( offer == null) offer = [];
  • 哦,我忘了,还要检查 undefined (因为我们使用的是 JSON.parse)
猜你喜欢
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
相关资源
最近更新 更多