2016-06-01 55 views
0

到目前爲止,我的所有工作都在我的購物車上,但是當我點擊迷你購物車上的刪除時,我似乎無法得到它來檢查localStorage,重置一些元素。如果我刷新頁面,它會將購物車數量更改爲0,並將價格更改爲0.00,但單擊刪除時不會更新。我不得不刷新和掙扎。jQuery檢查localStorage,如果爲空/ null刷新元素

刪除操作:

$(document).on('click', '.delete-item', function(event) { 
    event.preventDefault(); // disable normal link function so that it doesn't refresh the page 

    var item = $(this).data('item'); // get data item to delete 
    deleteItem(item); 
    $(".basket").hide(); 
}); 

功能:

function deleteItem(index){ 
    if (localStorage.basket) { 
    basket = JSON.parse(localStorage.basket); 
    basket.splice(index,1); // delete item at index 
    saveBasket(); 
    updateBasket(); 
    } 

    return; 
} 

保存功能:

// Save the basket 
function saveBasket(){ 
    if (window.localStorage){ 
     localStorage.basket = JSON.stringify(basket); 
    } 
} 

更新功能:

function updateBasket(){ 
    $.each(basket, function(product) { 
    //console.log(basket); 
    // update the basket count 
    //basket = JSON.parse(localStorage.basket); 

    //if(basket[product].qty === "0" || basket === null || basket.length === 0){ 
    if(basket[product].qty === "0"){ 
     $('.mini-cart .count').html("0"); 
    } else { 
     $('.mini-cart .count').html(basket[product].qty); // set the cart amount 
    } 

    // update the basket total 
    if(basket[product].price > 0){ 
     var finalPrice = basket[product].price * basket[product].qty; // calculate the price and how many 
     $('.mini-cart .price').html("£"+finalPrice); 
    } else { 
     $('.mini-cart .price').html("Basket is empty"); 
    } 
    }); 

    return; 
} 
+0

就像我說的那樣,它是按預期移除物品,但希望它更新計數和價格元素。在此先感謝您的幫助。 – James

回答

1

您需要檢查籃子是否有長度。如果它是你輸入each循環,否則你會做任何需要重置。

function updateBasket(){ 
    if(!window.basket || !basket.length){ 
    // do reset 
    }else{  
     $.each(basket, function(product) {... 
    } 
} 
+0

試過了,在每個內部取代我的狀態,但沒有解決問題,我應該在每個外面做什麼?感謝您的幫助btw! – James

+0

如果沒有籃子或沒有長度,每個都不會運行。你是否按照我寫的方式嘗試了它? – charlietfl

+0

對不起,凌晨4點在這一整天作爲原型演示在早上....給我5分鐘:) – James