【问题标题】:addeventlistener Shopping Cart does not workaddeventlistener 购物车不起作用
【发布时间】:2016-03-14 04:59:17
【问题描述】:

我会保持简单,在我的 jsfiddle 中,我有一个使用 javascript 的购物车。我想要的是有人点击按钮,它会添加一个项目到购物车。不幸的是,该函数不会调用 AdditemtoCart ,除非它在让我发疯的函数之外。让我知道我做错了什么。

jsfiddle 链接:https://jsfiddle.net/w2z3rb9h/51/

<div  id="cart" class="glyphicon glyphicon-shopping-cart">
<div id="money">
$</div>
<div id="length">
Items
</div>
</div>

<button name="button" id="addItem">
Add Item
</button> 

HTML Code above

// [(START)Cart]-------->
var cart = [];
// [(END)Cart]---------->


// [(START)Factory]-------->
var Item = function(name, price, count) {
    this.name = name;
    this.price = price;
    this.count = count;
};
// [(END)Cart]-------------->


// [(START)Adding Items to Cart]-------->
function addItemToCart(name, price, count){
for (var key in cart) {
 if (cart[key].name === name) {
         cart[key].count += count;
         cart[key].price += price;
         return;
     }
}

var item = new Item(name, price, count);
cart.push(item);
}
// [(END)Adding Items to Cart]---------->


// [(START)Remove Item From Cart]-------->
function removeItemFromCart(name,price) {
 for(var key in cart) {
     if(cart[key].name === name) {
        cart[key].count --;
        cart[key].price -= price;
     if(cart[key].count === 0) {
        cart.splice(key,1);
     }
        break;
     } 

 }
}
// [(END)Remove Item From Cart]-------->


// [(START)Remove All Item From Cart]-->
function removeItemFromCartAll(name){
  for (var key in cart){
      if(cart[key].name === name){
      cart.splice(key, 1);
      break;
      }

  }
}
// [(END)Remove All Item From Cart]---->



function call() {
addItemToCart("Apple", 1.2, 1);
 alert("It works");
}


document.getElementById("addItem").addEventListener("mousedown", call);



// [(START)Get Cart Amount] ----------->
function cartlength() {
var x = 0;
for (var key in cart) {
  x += cart[key].count;
}
 document.getElementById("length").innerHTML  = "Items:" + x;
}
//Invoked:Get Cart Amount
cartlength();
// [(END)Get Cart Amount] ----------->


// [(START)Price] ------------------->
function cartprice() {
var y = 0;
for (var key in cart) {
  y += cart[key].price;
}
 document.getElementById("money").innerHTML  = "$" + y;
}
//Invoke: Price
cartprice();
// [(END)Price] --------------------->

【问题讨论】:

    标签: javascript cart addeventlistener shopping


    【解决方案1】:

    当您单击addItem 按钮时,它会调用call 函数,并且在addItemToCartalert 内部也会调用。您可以在addItemToCart 中添加警报来测试它。项目现在在 cart 数组中。你需要更新cart div,调用cartlengthcartprice 函数。以这种方式更新call 方法:

    function call() {
      addItemToCart("Apple", 1.2, 1);
      cartlength();
      cartprice();
      alert("It works");
    }
    

    【讨论】:

    • Dima,愚蠢的我刚刚意识到我没有再次调用cartlengh() 和cartprice(),因此它没有显示。感谢您回答我的菜鸟问题,在您来拯救这一天之前,这给了我很大的痛苦。你这个男人!
    猜你喜欢
    • 2013-09-06
    • 2016-08-01
    • 2012-11-03
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多