向localStorage的对象添加元素

时间:2014-11-13 12:01:56

标签: javascript jquery local-storage

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

我已经设法达到一个点,您可以通过在列表视图中选择优惠来保存1个优惠。

在选择listview行时,它会从该特定选择中获取数据属性并填充一个数组,然后传递给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才能做到这一点?任何建议都会非常感激,因为我很难这样做。

1 个答案:

答案 0 :(得分:0)

是的,通常使用.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));