我正在编写一个简单的购物车,用于处理用户输入,然后输入我转移到我的支付处理器的金额。我的代码有效,但我不确定它是否是计算总数的最有效方法。其次,我想在选择三个类别时增加百分比折扣的可能性。我最初有一种方法可以通过IF语句进行大量检查,但这样做效率很低,而且还有一个未解决的问题。我如何对我之前存在的代码应用百分比折扣(如果四个项目类别中有三个> 0)?
var subtotal = 0;
var veu4 = 0;
var veo4 = 0;
var vres = 0;
var vcvl = 0;
var vedb = 0;
function update_price(pin) {
quantity = parseFloat(pin.value);
var callname = pin.name;
if (callname == "item1"){
price = quantity * 50;
subtotal -= vcvl * 50;
vcvl = quantity;
}
else if (callname == "item2"){
price = quantity * 50;
subtotal -= vres * 50;
vres = quantity;
}
else if (callname == "item3"){
price = quantity * 99;
subtotal -= veu4 * 99;
veu4 = quantity;
}
else if (callname == "item4"){
price = quantity * 129;
subtotal -= veo4 * 129;
veo4 = quantity;
}
else{
//commented out irrelevant
}
subtotal += price;
passtotal = document.getElementById("ftotal");
total = document.getElementById("ptotal");
total.innerHTML = subtotal;
passtotal.value = subtotal;
passtotal.innerHTML = subtotal;
}
}
非常感谢您的帮助!
答案 0 :(得分:1)
有很多方法可以做到这一点,但这会更干一些。
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;
}
我认为你的总计/小计的概念很奇怪。您的总计/小计似乎总是等于您上次计算的价格*数量。也许您生成的代码是错误的。因此我的也会略有不妥。要修复它,请使总数等于购物车中的所有小计。
至于将此数据传递到您的服务器,您应该传递将要购买的商品和数量。在服务器端,应重新计算小计和总计。我添加了您的购物车变量以帮助解决此问题。只需序列化此数据并将其发送到您的服务器处理。 当您实际向用户收费时,请勿使ftotal或ptotal的值准确无误。