我有一個動態列表視圖,顯示商店的各種優惠。我希望用戶能夠在列表視圖中選擇時保存這些商品,以便使用localStorage生成已保存的商品特徵。無法讀取使用localStorage undefined屬性推動
我已經設法達到了一個點,您可以從列表視圖中選擇優惠節省1個優惠。
在選擇listview行時,它會從該特定選擇中獲取數據屬性並填充一個數組,然後將該數組傳遞給localStorage。
JS
$("#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');
if (offerObject === null) {
offerObject = [];
}
var offerObject= {"offer":[
{
'offertitle': offertitle,
'offerdesc': offerdesc,
'offerexpiry': offerexpiry
}
]};
var offers = localStorage.setItem('offerObject', JSON.stringify(offerObject));
offers.push(offerObject);
});
var retrievedOffers = JSON.parse(localStorage.getItem('offerObject'));
var output2='';
for (var i in retrievedOffers.offer) {
output2+="<li>" + retrievedOffers.offer[i].offertitle + " " + retrievedOffers.offer[i].offerdesc + " " + retrievedOffers.offer[i].offerexpiry+"</li>";
}
$('#savedofferlist').html(output2).listview().listview('refresh');
我現在想推列表視圖進入offerObject變量的進一步優惠,以生產基於使用本地存儲用戶的選擇已保存的優惠的列表視圖。
當我嘗試從列表視圖中進行選擇時,出現JS錯誤「無法讀取未定義的屬性推送」。即使存在錯誤,它仍會顯示我所做的列表中的1個選擇。
我需要分解.push(offerObject)而不是推送整個變量嗎?
任何幫助,將不勝感激。
感謝您的建議,但我得到的錯誤「未定義是不是一個函數「 – DanBeard
@DanBeard我沒有發現你的JSON實際上是一個對象與一個數組,我認爲你想有一個數據結構是一個列表的提供...哪裏每次你給列表添加一個offer ... ...如果是的話,我會發佈一個修改後的代碼示例 – scunliffe
是的,這就是我想要做的事情,道歉,我應該在問題中更清楚一點。這將是非常感謝你解決方案我嘗試恢復到未定義的推送。 – DanBeard