函数计算两次折扣

时间:2012-05-23 03:27:39

标签: javascript

对于我的生活,我似乎无法弄清楚为什么这个功能无法正确计算。如果我运行此功能,折扣(totalPrice)会被应用两次,例如:20*1.05 == 21,但是当函数运行时它会给我22.05

我做错了什么?谢谢你的帮助。

<script type="text/javascript">
    function codeDiscount() {
        var totalCost = document.getElementById('total').value;
        var custCode = document.getElementById('coupon').value; 

        if (custCode == "ABCD" || custCode == "EFGH")
        {
            totalCost = document.getElementById('total').value; 
            var totalPrice = parseInt(totalCost) * 1.05;
            document.getElementById('total').value = totalPrice;
        }
    }
</script>

3 个答案:

答案 0 :(得分:1)

我怀疑问题不在此代码块中。有没有什么可以导致codeDiscount()第二次被调用?

答案 1 :(得分:0)

我怀疑你的代码有问题:

 <script type="text/javascript">
    function codeDiscount() {
        var totalCost = document.getElementById('total').value;
        var custCode = document.getElementById('coupon').value; 

        if (custCode == "ABCD" || custCode == "EFGH")
        {
            var totalPrice = parseInt(totalCost) * 1.05;
            document.getElementById('total').value = totalPrice;
        }
    }
</script>

另外,请确保您没有两次调用相同的功能。否则,结果将不正确。

答案 2 :(得分:0)

如果每次更改时都会更新总字段,最好采用此方法:

将总价值存储在单独的变量中:

var cartTotal = 0;

然后,只要项目总和发生变化,您就会更新它:

// calculate sum of all products
cartTotal = 0;
for (var i in all_products) {
    cartTotal += all_procucts[i].price;
}
// calculate discount
codeDiscount();

要重新计算折扣,请使用cartTotal,但只更新字段

var totalPrice = cartTotal;

if (custCode == 'ABCD') {
    totalPrice *= 1.05;
}

document.getElementById('total').value = totalPrice;