0

对于我的生活,我似乎无法弄清楚为什么这个函数不能正确计算。如果我运行这个函数,折扣 ( 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>
4

3 回答 3

1

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

于 2012-05-23T03:34:08.513 回答
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;
于 2012-05-23T08:01:44.753 回答
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>

另外,请确保不要两次调用相同的函数。否则,结果将不正确。

于 2012-05-23T03:33:56.700 回答