在本地存储中添加新对象会覆盖旧对象

时间:2016-03-25 14:29:35

标签: javascript jquery

   
var  product,    
   numberof,   
   quantity,  
   price,  
   localStorageProd;

function storeProdStorage( product , numberof, quantity, price ) {
    var itemsArray = [];
    newItem = {
      product : product ,
      numberof : numberof ,
      quantity : quantity ,
      price : price 
    };
  
    if (localStorage["prodbank"] != null) {
      var localStorageContentObject = JSON.parse(localStorage["prodbank"]);
      itemsArray.push(localStorageContentObject);

      for( var i = 0; i < itemsArray.length ; i++ ) {
        if(itemsArray[i].product == product) {
            itemsArray[i].quantity = quantity; 
            itemsArray[i].price = price;
            localStorage.setItem('prodbank', JSON.stringify(itemsArray[i]));  
        } else {
          itemsArray.push(newItem);
        localStorage.setItem('prodbank', JSON.stringify(itemsArray));  
        }
      }    
            
    } else {
      localStorage.setItem('prodbank', JSON.stringify(newItem));  
    }
}  
  
$(function() {
    $(".quantity-slider").slider({
        range: "min",     
        value: 50,
        min: 50,
        max: 1000,
        step: 50,
        
        slide: function(e,ui) { 
          var quant = $('.quantity').html(commaSeparateNumber((ui.value) *10)); 
          var price = $('.price').html(ui.value);
             if($('.price').html() == "50" ) {
                $('.quantity').html(250);
             }
      
       product = $(".pricing-title").html();
       numberof = $(".pricing-code .form-section h3").contents().get(0).nodeValue;  
       quantity = $(".pricing-code .form-section h3 .quantity").eq(0).html();  
       price = $(".pricing-code .form-section h3 .price").eq(0).html();
          
       storeProdStorage(product , numberof, quantity, price );
     } 
    });

    $('.quantity').html(($( ".quantity-slider" ).slider("value"))*5);
});
  
  

enter image description here

我有一个范围滑块,其值存储在对象中,这些对象被推入数组并存储在localStorage中。这是我想在localStorage中推送它们的格式。

[

{ "product":"Twitter Followers","numberof":"Number of Followers: ","quantity":"5,500","price":"550" },
{ "product":"Facebook Page Likes","numberof":"Number of Likes: ","quantity":"1,000","price":"100" },
{ "product":"Instagram Followers","numberof":"Number of Followers: ","quantity":"2,500","price":"250" },
{ "..":"..","..":"..: ","..":"..","..":".." }

每次范围滑块移动时,我都会根据用户试图购买的产品名称检查新的值,例如“Facebook Page Likes”,“Instagram Followers”。如果名称相同,我只是尝试更新本地存储中数量和价格的值。如果本地存储中不存在该名称,我想将其添加到内部。问题是一切都变得一团糟。当我移动滑块时它实际上更新了本地存储中的值,当它在“Facebook Page Likes”页面上说,但是当我移动滑块时,我会转到另一个(例如“Twitter粉丝”)旧的,并没有添加到以前的。

这是在浏览页面并运行滑块时我在控制台中获得的示例。每次只有一个对象保留在本地存储中,而前一个对象被完全删除。

存储{prodbank:“{”product“:”Facebook Page Likes“,”numberof“:”Likes的数量:“,”数量“:”1,000“,”price“:”100“}”,长度: 1}

我希望它添加并保留旧对象的值,而不是完全删除它。这就是我想要的例子。在这里,您可以看到第二个带有twitter粉丝值的对象存在,并且它已添加到存储

存储{prodbank:“{”product“:”Facebook Page Likes“,”numberof“:”Likes的数量:“,”数量“:”1,000“,”price“:”100“}”, “{”product“:”推特追随者“,”numberof“:”追随者数量:“,”数量“:”2,000“,”价格“:”200“}”,长度:2}

1 个答案:

答案 0 :(得分:2)

如果您希望添加新值而不是覆盖新值,则需要使用+=而不是=。这是因为+=会将右手值添加到左手值,而=会将左手值替换为右手值

尝试:

itemsArray[i].quantity  +=  quantity; 
itemsArray[i].price     +=  price;

如果我对你想要达到的目标的理解是正确的。