我有一个动态列表视图,显示商店的各种优惠。我希望用户在从列表视图中选择时能够保存这些优惠,以便使用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才能做到这一点?任何建议都会非常感激,因为我很难这样做。
答案 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));