2013-03-04 53 views
0

我要寻找一些JavaScript将:对所选的产品(下拉菜单)和数​​量如何在Javascript中更新购物车总计?

  • 更新车总计进入

(*安全将通过后端PHP处理。我试图这样在最后三天,但显然我的代码是如此糟糕,我感到羞愧再次在这里重新发布它)


我的思考:
- 科瑞EA车对象
- 作出这样的重新计算上发生
(我想不出别的这就需要给出的JavaScript将只是在路过这个PHP脚本反正检查)

任何改变总的功能

有谁知道一些JavaScript的工作,我寻求?我的想法是否正确?

回答

2

下面是使用显示模块模式构建的示例购物车javascript对象。

var shoppingCart = function() { 
     var obj = {}, items = []; 

     obj.AddItem = function (itemNo, quantity, price) { 
      var item = {}; 
      item.itemNo = itemNo; 
      item.quantity = quantity; 
      item.price = price; 
      items.push(item) 
     }; 

     obj.GetAllItems = function() { 
      return items; 
     }; 

     obj.GetItemByNo = function (item) { 
      for (var i = 0; i < items.length; i++) { 
       if (items[i].itemNo === item) 
        return item[i]; 
      } 
      return null; 
     }; 

     obj.CalculateTotal = function() { 
      var total = 0; 
      for (var i = 0; i < items.length; i++) { 
       total = total + (items[i].quantity * items[i].price); 
      } 
      return total; 
     }; 

     return obj; 
    }; 
    var cart = new shoppingCart(); 

使用AddItem方法添加项目,包括在UI中有用的其他属性。

shoppingcart.AddItem(2,4,2.4); 

获取的项目列表中的购物车

var items = shoppingcart.GetAllItems(); 

在计算项目的总价格在购物车

var total = shoppingcart.CalculateTotal(); 

请注意,我已经输入在这里的代码,所以可能包含错字,也建议在添加项目之前将数据类型验证作为数字进行价格和数量验证。

+0

令人印象深刻的感谢。我认为我在学习Javascript时混淆不清,我只是使用了我第一次遇到的第一个问题,而不是首先想到伪问题。我想扩大这个以包含折扣金额(例如5+ 5%折扣等),如果我的想法是正确的,我将创建一个新的功能,在'AddItem'被调用之前处理这个。 – 2013-03-04 20:37:30

+0

这取决于需求,如果可以将折扣应用于单个项目,则可以为项目对象添加另一个属性“折扣”。因此,考虑总价格的数量*(价格 - (%折扣*价格))。如果您希望将折扣应用于totalAmount,请考虑使用其他Method折扣率作为输入并应用于TotalAmount。 – Sunny 2013-03-04 20:45:44

+0

我偏好通过将折扣%存储在单独的属性中而不是在添加项目之前将其应用于价格来实时计算价格。 – Sunny 2013-03-04 20:53:26