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