【问题标题】:Simple shopping cart using JavaScript Cookie使用 JavaScript Cookie 的简单购物车
【发布时间】:2014-04-22 01:50:55
【问题描述】:

我有以下代码来使用JavaScript 实现简单的练习购物车。有一个结帐链接调用getcookie() 来检查存储的cookies 的值。当 cookie 中没有任何内容时,请单击链接警报进行输入。如果没有在输入框中输入任何值并点击“添加到购物车”,则验证完成并警告错误消息。

由于某种原因,cookie 没有从输入字段中获取值。我现在尝试了很长时间,但无法调试代码。最后只显示一个空的警报框。我感谢任何调试。提前致谢。

<script type="text/javascript">
    var value;
    var productID;

    function setItem(abd) {
        value = abd.value;
        productID = abd.getAttribute("productID");
        var intRegex = /^\d+$/;
        var numberOfItems;
        if (!intRegex.test(value) || (value <= 0)) {
            alert('Please Enter valid numberofitem');
        } else {
            numberOfItems = value;
        }
    }
    function getCookie() {
        if (value == undefined) {
            alert("There is nothing in the shopping cart!");
        } else {
            var cookieArray = document.cookie.split(';');
            var printHolder = "";
            for (var i = 0; i < cookieArray.length; ++i) {
                var pairArray = cookieArray[i].split('=');
                alert(pairArray[0]);
            }
            alert(printHolder);
        }
    }
    function setCookie() {
        if (value == undefined) {
            alert("Please add number of items in text box");
        } else {
            document.cookie = productID + "=" + value + "; ";
            alert(value + " Product(s) with id " + productID +
                " has been added to shopping cart!");
        }
    }

</script>
<a href="javascript:getCookie()"> Checkout </a>
<input name="item-select" id="item-select"
       productid="p001"  style="width: 50px" onBlur="setItem(this)" >
<button type="button" onclick="setCookie()">Add to cart.</button>

我想要的结果终于是这样了!

【问题讨论】:

    标签: javascript html cookies shopping-cart setcookie


    【解决方案1】:

    此代码经过一些更改后运行良好。 我用的是chrome,后来发现

    当文件位于local machine 上并使用文件路径直接加载到浏览器中时,Google Chrome 不会创建 cookie。

    宁可尝试localhost. 当您将代码放入服务器时它肯定可以工作。 Chrome 在这里变得很痛苦!

    如果您想使用 Javascript 创建购物车,请点击此链接。 http://www.smashingmagazine.com/2014/02/create-client-side-shopping-cart/

    【讨论】:

      【解决方案2】:

      您的 getCookie 可能会给您不正确的结果。

      var cookiearray= document.cookie.split(';');
      var toprint="";
      for(var i=0; i<cookiearray.length; ++i) 
      { 
          var pairArray= cookiearray[i].split('=');
          alert(pairArray[0]);
      }
      alert(toprint);
      

      这里有两个问题;

      1) 当您在 for 循环中时,每次循环时,您都会始终提醒数组中的第一项 pairArray[0] 您需要将其更改为 pairArray [i]

      2) 您会看到 empty alert,因为这是您分配给 toprint 变量的内容。 - 您在 for 循环之前指定打印一个空字符串然后您会提醒该变量而不为其分配新值,因此您将显示一个空的警报框! - 还要确保您的 cookie 数组不为空

      试一试,享受编码:)

      库什

      【讨论】:

      • 显然,我已经尝试过了。不幸的是,它没有用。
      • 伙计!该 abd 正在接受 (this) 对象。你知道你在说什么吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      相关资源
      最近更新 更多