2016-03-25 34 views
1

添加在本地存储新对象将覆盖旧的


 
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" }, 
{ "..":"..","..":"..: ","..":"..","..":".." } 

]

每次范围滑块移动我由产品的用户是在试图购买如“脸谱页面喜欢”的名称检查新到来的价值观,” Instagram的追随者“。如果名称相同,我只是试图更新本地存储中数量和价格的值。如果名称不存在于本地存储中,我想将其添加到里面。问题是一切都变成了一团糟。当我移动滑块时,它实际上会更新本地存储器中的值,当它在“Facebook页面赞”页面上说时,但当我移动滑块时,另一个(例如“Twitter关注者”)带有值覆盖的新对象旧的,并没有添加到以前的。

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

存储{prodbank:“{”product“:”Facebook Page Likes“,”numberof“:”Number of Likes:“,”quantity“:”1,000“,”price“:”100“}” :1}

我希望它添加并保留旧对象的值不要完全删除它。这就是我想要的例子。在这里,您可以看到第二个包含Twitter追随者值的对象存在并且它被添加到存储器中

Storage {prodbank:“{”product“:”Facebook Page Likes“,”numberof“:”赞成数:数量“:”1,000“,”价格“:”100“}”, “{”product“:”Twitter追随者“,”numberof“:”追随者人数:“,”数量“:”2,000“ ,“price”:“200”}“,length:2}

回答

2

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

尝试:

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

也就是说,如果我的理解你试图达到的是正确的。

+0

谢谢,但这不是我要找的。每个对象的值都可以正确计算(它们不是问题)。这不是计算。我想添加本地存储中不存在的每个新对象,但不会发生。其实它已被添加,但它会覆盖旧的。我用最后四个段落编辑了这个问题,因为这是误导 –

相关问题