2013-04-25 46 views
0

我在localStorage的5个项目,然而,当我尝试输出的所有文件,一些localStorage的项目

只有2个项目被输出,而不是全部。

JS是把成的localStorage:

$(document).ready(function() { 
    $.fn.SaveToCart = function (id, iName, iAlbum, iPrice) { 
     var quantity = 0; 
     if (localStorage.getItem('Product_' + id) === null) { 
      quantity = 1; 
     } else { 
      var tempItem = JSON.parse(localStorage.getItem('Product_' + id)); 
      var tempQuantity = parseInt(tempItem['quantity']); 
      quantity = tempQuantity + 1; 
     } 
     var cartItem = { 
      'quantity': quantity, 
      'name': iName, 
      'album': iAlbum, 
      'price': iPrice 
     } 
     localStorage.setItem('Product_' + id, JSON.stringify(cartItem)); 
    }; 

车JS:

function ShoppingCart() { 

    var output; 
    var productName; 
    var productAlbum; 
    var productQuantity; 
    var productPrice; 
    var productSubTotal = 0; 
    var totalPrice; 


    for (var i = 0; i < localStorage.length - 1; i++) { 
     var keyName = localStorage.key(i); 
     if (keyName.indexOf('Product_') == 0) { 
      var product = localStorage.getItem(keyName); 

      var product = localStorage.getItem('Product_' + i); 

      var result = JSON.parse(product); 

      totalPrice = 0; 
      productName = result.name 
      productAlbum = result.album; 
      productQuantity = parseInt(result.quantity); 
      productPrice = parseFloat(result.price).toFixed(2); 
      productSubTotal = parseInt(productQuantity) * parseFloat(productPrice).toFixed(2); 

      outputName = "<div id='cart-table'><table><tr><td><b>NAME: </b>" + productName + "</td></tr></div>"; 
      outputAlbum = "<tr><td><b>ALBUM: </b>" + productAlbum + "</td></tr>"; 
      outputQuantity = "<tr><td><b>QUANTITY: </b>" + productQuantity + "</td></tr>"; 
      outputPrice = "<tr><td><b>PRICE: </b> EUR " + productPrice + "</td></tr>"; 
      outputSubTotal = "<tr><td><b>SUB-TOTAL: </b> EUR " + productSubTotal + "</td></tr></table><br><br>"; 


      var TotalOutput = outputName + outputAlbum + outputQuantity + outputPrice + outputSubTotal; 

      document.getElementById("Cart-Contents").innerHTML = document.getElementById("Cart-Contents").innerHTML + TotalOutput; 
      totalPrice += parseFloat(totalPrice) + parseFloat(productSubTotal); 
      productSubTotal = productSubTotal + productSubTotal; 
     } 
     i++; 


    } 
    totalPrice = productSubTotal; 

    localStorage.setItem("price", totalPrice); 

    var outputTotal = "<br><br><h1><table><tr><td><b>TOTAL:</b> EUR " + totalPrice + "</td></tr></table></h1>"; 
    document.getElementById("total-price").innerHTML = document.getElementById("total-price").innerHTML + outputTotal; 


} 

function ClearCart() { 

    localStorage.clear(); 
    document.location.reload(true); 

} 

window.onload = ShoppingCart; 

    </script> 

HTML:

<div id="Cart-Contents"></div> 
<div id="total-price"></div> 

另外,我还有一个问题,是没有得到计算的总价格正确。我得到28.12,总数为14.06 + 16.40。这是怎么回事?

为了给你一个想法:

http://i.imgur.com/RmftSoU.png

http://i.imgur.com/qO8FQN8.png

+0

你能为此添加小提琴吗? – DrColossos 2013-04-25 13:57:45

+1

将'for'循环更改为:'for(var i = 0; i Ian 2013-04-25 13:58:15

+2

为什么这两条单独的行在循环中初始化“产品”变量? – Pointy 2013-04-25 13:59:45

回答

1

更改您的for循环这样的:for (var i = 0; i < localStorage.length; i++){

并且不要将i++;添加到循环体的末尾。

由于不同的原因,两者都会导致您的循环不能全部打开。

+0

我仍然得到2个最大项目显示,并不是所有的项目在localStorage – JustAJDoe 2013-04-25 14:02:18

+0

检查什么'localStorage.length'之前,你循环它 – Ian 2013-04-25 14:03:53

+0

它是5。 (localStorage.length);' – JustAJDoe 2013-04-25 14:09:29

相关问题