Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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_Arrays_Forms - Fatal编程技术网

Javascript 计算订单总额:应用折扣

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

我正在使用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;
    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;
}