簡體   English   中英

更改數組對象屬性,然后保存回localStorage?

[英]alter array object property then save back to localStorage?

我在做購物車,如果item_id在localStorage中存在,我想增加數量。

<button data-item_id="1" data-item_name="cake" data-item_price="2 dollar">Add to cart</button>

不知道為什么我的下面的代碼不起作用,它添加了一個新對象而不是增加數量值。

   $(function(){

        $('button').click(function(){
           var item_id = $(this).attr('data-item_id');
           var item_name = $(this).attr('data-item_name');
           var item_price = $(this).attr('data-item_price');

            var arr = JSON.parse(localStorage.getItem('cart')) || [];
            var obj = {};

            if(arr.length === 0){ // first time insert
                obj.item_id = item_id;
                obj.item_name = item_name;
                obj.item_price = item_price;

                obj.item_qty = 1;
            }else{
                $(arr,function(i){
                //doesn't work here
                   obj.item_qty[i] = parseInt(this.qty) + 1;
                });
            }

            arr.push(obj);
            localStorage.setItem('cart',JSON.stringify(arr));

        });

    });

調試幾個小時無法解決。

使用{}而不是[]使arr每個item_id包含一個對象,並且每次調用時,每個對象將在數量上增加1。 此代碼中沒有刪除

$(function(){
    $('button').on("click",function(e){
       var item_id    = $(this).data("item_id");
       var item_name  = $(this).data("item_name");
       var item_price = $(this).data("item_price");
       var cart = JSON.parse(localStorage.getItem('cart')) || {};
       var currentObj = cart[item_id];
       if(currentObj){ 
         currentObj.qty++; // increase the qty by one
       }
       else { // item_id had not been stored before, create it
         cart[item_id]= { 
           "item_name" :item_name,
           "item_price":item_price,
           "item_qty"  :1
         }
       }
       localStorage.setItem('cart',JSON.stringify(cart));
    });
});

然后,您必須這樣做:

$(function(){
    $('button').click(function(){
       var item_id = $(this).attr('data-item_id');
       var item_name = $(this).attr('data-item_name');
       var item_price = $(this).attr('data-item_price');

        var arr = JSON.parse(localStorage.getItem('cart')) || [];
        var obj = {};
            obj.item_id = item_id;
            obj.item_name = item_name;
            obj.item_price = item_price;

            obj.item_qty = 1;
            detectchange = 'no';

            $.each(arr,function(i){
            if(this.item_id == obj.item_id){
               this.item_qty = parseInt(this.item_qty) + 1; detectchange = 'yes';     }
            });
        if(detectchange =='no'){ 

        arr.push(obj); }
        localStorage.setItem('cart',JSON.stringify(arr));

    });

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM