Javascript 计算订单总额:应用折扣
我正在使用javascript开发一个在线订单。我几乎让它工作,但我想做的是申请12.5%的折扣,如果超过5个项目被选中。到目前为止,如果选择了多个项目,我已经设法获得了折扣。这是我的密码:Javascript 计算订单总额:应用折扣,javascript,arrays,forms,Javascript,Arrays,Forms,我正在使用javascript开发一个在线订单。我几乎让它工作,但我想做的是申请12.5%的折扣,如果超过5个项目被选中。到目前为止,如果选择了多个项目,我已经设法获得了折扣。这是我的密码: var totalItems = 0 // Run through the form fields to check for any filled fields for (var i=0; i<juiceForm.length; i++) { n=0; juicetotal = 0
var totalItems = 0
// Run through the form fields to check for any filled fields
for (var i=0; i<juiceForm.length; i++)
{
n=0;
juicetotal = 0;
itemQuantity = Number(parseInt(juiceForm[i].value)); // convert field value to a number
itemQuantity = parseInt(juiceForm[i].value);
if (isNaN(itemQuantity))
{
itemQuantity = 0; // If the form field value is not a number, make it zero
}
// count the total number of juices selected
totalItems = totalItems += Number(parseInt(juiceForm[i].value));
if (totalItems >= 5 || itemQuantity >= 5 || (totalItems + itemQuantity) >= 5)
{
juiceTotal = (juiceTotal+(itemQuantity * juicePrice[i]))*0.875;
}
else
{
// Multiply the quantity by the item price and update the order total
juiceTotal = juiceTotal+(itemQuantity * juicePrice[i]);
}
}
var totalItems=0
//运行表单字段以检查是否有任何已填充的字段
对于(变量i=0;i=5 | | |项数量>=5 | |(总计项+项数量)>=5)
{
榨汁总量=(榨汁总量+(项目数量*榨汁价格[i])*0.875;
}
其他的
{
//将数量乘以项目价格,并更新订单总额
juiceTotal=juiceTotal+(项目数量*juicePrice[i]);
}
}
我遇到的麻烦是,如果选择了多个项目,总共超过5个项目,那么计算结果就错了。例如,如果我有5箱20英镑的苹果汁和1箱22英镑的橙汁,加上12.5%的折扣,我总共应该得到106.75英镑,但我得到了95.81英镑
我不确定我是否犯了明显的错误。有人能给我一些关于我做错了什么的建议吗?也许你会想到这一点(未经测试,将其视为伪代码)
var totalItems=0
var juiceTotal=0;
对于(变量i=0;i=5)
果汁总量*=0.875;
}
每次添加折扣产品时,您都将Juice Total
乘以0.875
。你的计算结果是((20*5*0.875)+(22*1))*0.875
。在所有价格合计后(并将其四舍五入到小数点后的固定数字),应用折扣一次。您的代码中还有其他问题,例如声明的变量没有var
,parseInt
没有明确的基础…还有totalItems+=Number(parseInt(juiceForm[i].value))
和juiceTotal+=(itemQuantity*juicePrice[i])*0.875代码>就足够了
var totalItems = 0
var juiceTotal = 0;
for (var i=0; i<juiceForm.length; i++)
{
var itemQuantity = parseInt(juiceForm[i].value);
if (isNaN(itemQuantity))
{
itemQuantity = 0;
}
totalItems += itemQuantity;
juiceTotal += (juicePrice[i]*itemQuantity);
}
if (totalItems >= 5)
juiceTotal *= 0.875;
}