0

私の人生では、この関数が正しく計算されない理由を理解できないようです。この関数を実行すると割引 ( totalPrice) が 2 回適用され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>

また、同じ関数を 2 回呼び出さないようにしてください。そうしないと、結果が不正確になります。

于 2012-05-23T03:33:56.700 に答える