JavaScript表单 - 为特定数量应用折扣

时间:2015-03-11 13:34:24

标签: javascript forms variables

我正在创建一个简单的表单,根据订购数量和税金计算价格。我还想为以下数量申请折扣:

10-19:10%折扣
20-29:20%折扣
30-39:30%折扣
40-99:40%的折扣

我的问题是该功能仍然返回总价而没有特定数量的折扣。当输入的数量在一定范围内时,我已将其设置为折扣更新为适当的百分比(var discountPrice)。如果应用折扣,则总计应更新为discountedTotal,并从那里计算税额和最终总额。但是,我的语法似乎存在问题,因为当我运行它时,这些都不会应用于该函数。

任何关于为什么if / else语句或整个函数运行不正常的见解将不胜感激。如果需要,这里是完整的HTML / JS:http://jsfiddle.net/pas0tmpL/

function priceCalculation() {

var nameFirst = document.getElementById("first_name").value;
var nameLast = document.getElementById("last_name").value;
var phoneNum = document.getElementById("phone_number").value;
var quantity = document.getElementById("quantity_order").value;
var price = document.getElementById("price_fixed").value;
var total = quantity * price;
var discountPrice = 0
var discountedTotal = total - (total * discountPrice);
const taxRate = 0.085;
var tax = total * taxRate;
var totalPlusTax = total + tax;

if (quantity > 9 || quantity < 20) {
        discountPrice = .10;        
        total = discountedTotal;
    }           
    else if (quantity > 19 || quantity < 30) {
        discountPrice = .20;
        total = discountedTotal;
    }
    else if (quantity > 29 || quantity < 40) {
        discountPrice = .30;
        total = discountedTotal;    
    }
    else if (quantity > 39 || quantity < 100) {
        discountPrice = .40;
        total = discountedTotal;    
    }

document.getElementById("order_total").value = "$" + totalPlusTax.toFixed(2);

3 个答案:

答案 0 :(得分:0)

如果你想学习,你必须做好功课......但是......

你的代码上下运行..你必须这样做: discountedTotal =总计 - (总* discountPrice); 每次修改discountPrice变量.....

这里没有示例代码。

答案 1 :(得分:0)

像这样:

function priceCalculation() {
var nameFirst = document.getElementById("first_name").value;
var nameLast = document.getElementById("last_name").value;
var phoneNum = document.getElementById("phone_number").value;
var quantity = document.getElementById("quantity_order").value;    
var price = document.getElementById("price_fixed").value;
var total = quantity * price;
var discountPrice = 0  ;
var discountedTotal = 0;
const taxRate = 0.085;
var tax = total * taxRate;
var totalPlusTax = total + tax;

   if (quantity > 9 || quantity < 20) {
        discountPrice = .10;        
        total = total - (total * discountPrice);
    }           
    else if (quantity > 19 || quantity < 30) {
        discountPrice = .20;
        total = total - (total * discountPrice);
    }
    else if (quantity > 29 || quantity < 40) {
        discountPrice = .30;
        total = total - (total * discountPrice);    
    }
    else if (quantity > 39 || quantity < 100) {
        discountPrice = .40;
        total = total - (total * discountPrice);    
    }

document.getElementById("order_total").value = "$" + totalPlusTax.toFixed(2);

} // end function priceCalculation();    

答案 2 :(得分:0)

我可以看到几个问题。一个是,你使用

计算开头的discountedTotal
var discountPrice = 0
var discountedTotal = total - (total * discountPrice);

总计 - (总计* 0)只会给你total。您应该只知道discountedTotal是什么后才设置discountPrice

你的if语句也存在一些问题。作为提示,||表示&#34;或&#34;。因此,你的第一个if是&#34;如果数量大于9或小于20&#34; - 并且存在的每个整数大于9或小于20(有些都是!)。因此,您只会尝试应用第一个折扣,并将其应用于所有内容。

祝你好运!