Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
购物车总价的Javascript-良好实践和添加函数_Javascript_Cart - Fatal编程技术网

购物车总价的Javascript-良好实践和添加函数

购物车总价的Javascript-良好实践和添加函数,javascript,cart,Javascript,Cart,我正在编写一个简单的购物车,它可以处理用户输入,然后再计算出一笔金额,并将其传递给我的支付处理器。我有可以工作的代码,但我不确定这是否是计算总数的最有效方法。第二,我想补充一点,当选择三个类别时,可能会有百分比折扣。我最初有一种方法,可以通过IF语句进行大量检查,但效率很低,而且还有一个未解决的问题。我如何对我先前存在的代码应用百分比折扣(如果四个项目类别中有三个>0) } 非常感谢你的帮助 有很多方法可以做到这一点,但这会更加干燥 var items = { item1: 50, it

我正在编写一个简单的购物车,它可以处理用户输入,然后再计算出一笔金额,并将其传递给我的支付处理器。我有可以工作的代码,但我不确定这是否是计算总数的最有效方法。第二,我想补充一点,当选择三个类别时,可能会有百分比折扣。我最初有一种方法,可以通过IF语句进行大量检查,但效率很低,而且还有一个未解决的问题。我如何对我先前存在的代码应用百分比折扣(如果四个项目类别中有三个>0)

}


非常感谢你的帮助

有很多方法可以做到这一点,但这会更加干燥

var items = {
  item1: 50,
  item2: 50,
  item3: 99,
  item4: 129
};

var cart = {};

function update_price(pin) {
  quantity = parseFloat(pin.value);

  var callname = pin.name;

  // Get the total for this item with quantity
  price = quantity * items[callname];

  // Update quantity in cart
  cart[callname] = {quantity: quantity, subtotal: price};  

  passtotal = document.getElementById("ftotal"); 
  total = document.getElementById("ptotal");
  total.innerHTML = price;
  passtotal.value = price;
  passtotal.innerHTML = price;
}
我认为你对总数/小计的概念很奇怪。您的总/小计似乎总是等于您上次计算的价格*数量。也许您生成的代码是错误的。因此,我的也会有点错误。若要解决此问题,请使总数等于购物车中的所有小计


至于将此数据传递到服务器,您应该传递将要购买的项目和数量。在服务器端,应该重新计算小计和总计。我添加了您的cart变量来帮助实现这一点。只需序列化此数据并将其发送到您的服务器进行处理当您实际向用户收费时,不要认为ftotal或ptotal的值是准确的。

不要在js中计算总数,这对客户端篡改是开放的。好的,谢谢,这是我不熟悉的好做法。你有什么建议?
var items = {
  item1: 50,
  item2: 50,
  item3: 99,
  item4: 129
};

var cart = {};

function update_price(pin) {
  quantity = parseFloat(pin.value);

  var callname = pin.name;

  // Get the total for this item with quantity
  price = quantity * items[callname];

  // Update quantity in cart
  cart[callname] = {quantity: quantity, subtotal: price};  

  passtotal = document.getElementById("ftotal"); 
  total = document.getElementById("ptotal");
  total.innerHTML = price;
  passtotal.value = price;
  passtotal.innerHTML = price;
}