【问题标题】:JavaScript - JSON - LocalStorageJavaScript - JSON - 本地存储
【发布时间】:2013-04-25 08:58:22
【问题描述】:

谁能告诉我为什么尝试运行此代码时我的页面上没有任何输出?

我正在尝试解析 localStorage 项目并使用 for 循环为每个项目创建一个表。然后我添加总价。

注意:localStorage 包含 3 个项目,并且 NOT 为空。

<!DOCTYPE html>
<html>
<head>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">
    <style>img{ height: 100px; float: left; }</style>
    <link rel="stylesheet" type="text/css" href="style.css">

    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>


    <script>

        function ShoppingCart() {

            var totalPrice = 0;
            var output;

        for (var i = 0; i < localStorage.length; i++){

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

            var result = JSON.parse(product);

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

           productName = result.name
           productAlbum = result.album;
           productQuantity = result.quantity;
           productPrice = parseFloat(result.price);
           productSubTotal = productQuantity * productPrice;

           totalPrice = totalPrice + productSubTotal;


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




                        }

            var outputTotal = "<table><tr><td>" + totalPrice + "</td></tr></table>";
            var TotalOutput = outputName + outputAlbum + outputQuantity + outputPrice + outputSubTotal + outputTotal;
            document.getElementById("Cart-Contents").innerHTML=TotalOutput

                    alert(TotalOutput);
        }

          window.onload = ShoppingCart();


    </script>


</head>
<body>
<div id="wrapper">

    <header id="header">
        <strong><table id="menu"><tr><td>Home</td><td>Contact</td><td>Login</td><td></td><td>Products</td></tr></table></strong>
    </header>
    <section id="middle">

        <div id="container">
            <div id="content">
                <a class=""  onclick="ShoppingCart()"><span>Cart</span></a>
                <div id="Cart-Contents">


            </div>


            </div><!-- #content-->
        </div><!-- #container-->

        <aside id="sideLeft">
            <strong>Left Sidebar:</strong>
        </aside><!-- #sideLeft -->

        <aside id="sideRight">
            <strong>Right Sidebar:</strong>
        </aside><!-- #sideRight -->

    </section><!-- #middle-->

</div><!-- #wrapper -->



<footer id="footer">
    <strong>by Brian Livori</strong>
</footer><!-- #footer -->
</body>
</html>

【问题讨论】:

  • 您确定localStorage 中的项目以“Product_”开头吗?根据您设置项目的方式,它可能没有长度。无论哪种方式,您都可能希望使用 for in 循环进行循环

标签: javascript jquery html css json


【解决方案1】:

很简单,改一下

window.onload = ShoppingCart();

window.onload = ShoppingCart;

window.onload 是一个回调函数引用。当您分配ShoppingCart() 时,实际上您将函数执行的结果分配给window.onload

这里的例子http://jsbin.com/urikub/1/edit

【讨论】:

  • 解释为什么。发生的事情对我们来说可能很明显,但对 OP 来说却不是。
  • @Vadim 不,我仍然没有输出。页面保持空白!
  • 啊,它成功了,但是没有显示名称和专辑!有什么帮助吗?
  • @Vadim 出于某种原因,localStorage 并不总是从一页到下一页。知道为什么吗?
  • @Brian localStorage 使用同源策略,这意味着如果 URL 的架构、区域、域(包括子域)或端口发生了变化 - 您将不会得到相同的 localStorage,但是新的一个。当你从一个页面转到另一个页面时,检查你的来源没有改变。
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 2012-02-23
  • 2018-08-11
  • 2016-04-29
  • 2022-01-25
  • 2014-02-02
  • 1970-01-01
相关资源
最近更新 更多