Javascript订单 - 计算折扣(获取错误消息)

时间:2016-05-30 02:25:20

标签: javascript

我必须在JS中整理一份订单,计算出每10个小时的10-40%折扣"订购。我表单上的所有字段都会验证(姓名,电话,订购金额等),但是当我点击提交时,我会收到消息"请更正您的输入。"不确定我错过了什么!我创建的函数中必定存在一些错误才能计算折扣。这里有很多代码,所以我只包含了最后两个有问题的函数。任何想法都会很棒......谢谢!

function calcDiscount(quantity){

    if (quantity < 10)
        return 0;

    if (quantity < 20)
        return 0.1;

    if (quantity < 30)
        return 0.2;

    if (quantity < 40)
        return 0.3;

    if (quantity >= 40)
        return 0.4;

} // end function calcDiscount(quantity)

    function calcOrder() {
    if (validateFirstName() && validateLastName() && validatePhone() && validateQuantity() && calcDiscount(quantity)) {

        const TAXRATE = 0.085;
        var userName = document.getElementById("username").value;
        var userName2 = document.getElementById("username2").value;
        var quantity = document.getElementById("quantity").value;
        var cost = document.getElementById("cost").value;
        var extendedCost = quantity * cost;
        var taxAmount = extendedCost * TAXRATE;
        var discountAmount = calcDiscount(quantity) * extendedCost;
        var orderCost = extendedCost - discountAmount + taxAmount;
        document.getElementById("costExtended").value = "$" + orderCost.toFixed(2);

        document.getElementById("output").innerHTML += "<p>Hello " + userName + userName2 + " - Your order of " + quantity + " widgets, totals $" + orderCost.toFixed(2) + ", including tax" + "and a" + discountAmount + "% discount.</p>";
    } else {
        document.getElementById("costExtended").value = "";
        alert("Please correct your input");
    }
} // end function calcOrder

1 个答案:

答案 0 :(得分:1)

回答你的问题不会对其他任何人有所帮助,因为它对你来说是独一无二的,而问题只是编码错误而你真的不知道自己在做什么。

很明显,如果弹出错误,则以下其中一项返回false:

 validateFirstName() && validateLastName() && validatePhone() && validateQuantity() && calcDiscount(quantity)

但是你没有包含任何这些功能,所以很难知道问题的原因是什么,而不是你更新你的问题以包含它们我认为你需要学习更多,因为一个错误或者所有这些功能都是微不足道的,你需要解决的答案已经在某处。

顺便说一句,我建议你在你的函数中优化你的逻辑来计算折扣,因为尽管你的if列表有效,你可以只用一行来解决这个问题:

 var discount = Math.floor(quantity/10)/10;