我必须在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
答案 0 :(得分:1)
回答你的问题不会对其他任何人有所帮助,因为它对你来说是独一无二的,而问题只是编码错误而你真的不知道自己在做什么。
很明显,如果弹出错误,则以下其中一项返回false:
validateFirstName() && validateLastName() && validatePhone() && validateQuantity() && calcDiscount(quantity)
但是你没有包含任何这些功能,所以很难知道问题的原因是什么,而不是你更新你的问题以包含它们我认为你需要学习更多,因为一个错误或者所有这些功能都是微不足道的,你需要解决的答案已经在某处。
顺便说一句,我建议你在你的函数中优化你的逻辑来计算折扣,因为尽管你的if列表有效,你可以只用一行来解决这个问题:
var discount = Math.floor(quantity/10)/10;