首页 > 解决方案 > 如何在订单中实现 if 语句

问题描述

我正在构建一个简单的订单表格,其中包含一些带有数字和隐藏字段的计算(用于电子邮件和自动回复)。

当用户输入字段不是“0”时,我希望它计算总价中的运费。在下面的脚本中,即使用户字段不是“0”,交付成本也始终返回“0”。

如果我将值更改为某个值,即使用户字段为“0”,它也始终返回该值。所以 IF 在某种程度上是错误的。

/* Get the values from the user*/
function getAantal() {
    var AantalBoek = document.getElementById('AantalBoek').value;
    var AantalCD = document.getElementById('AantalCD').value;
    var AantalSoundtrack = document.getElementById('AantalSoundtrack').value;

    /* Product variables*/
    var PrijsBoek = document.getElementById('PrijsBoek').value;
    var PrijsCD = document.getElementById('PrijsCD').value;
    var PrijsSoundtrack = document.getElementById('PrijsSoundtrack').value;

    /* Delivery variables, Soundtrack does not have delivery*/
    /* in my logic the IF says: if user fills in 0 for AantalBoek, 
    then VerzendingBoek is 0 instead of 7. But it always returns 0, even if AantalBoek is 1*/
    var VerzendingBoek = document.getElementById('VerzendingBoek').value;
    if (AantalBoek !== null && AantalBoek !== '') {
        VerzendingBoek = 0;
    }

    var VerzendingCD = document.getElementById('VerzendingCD').value;
    if (AantalCD !== null && AantalCD !== '') {
        VerzendingCD = 0;
    }

    /* Calculation of the Product total*/
    var SubTotaalBoek = PrijsBoek * AantalBoek;
    var SubTotaalCD = PrijsCD * AantalCD;
    var SubTotaalSoundtrack = PrijsSoundtrack * AantalSoundtrack;

    /* Calculation of the Delivery total*/
    var TotaalVerzending = +VerzendingBoek + +VerzendingCD;

    /* Calculation of the Final total*/
    var Totaal = +SubTotaalBoek + +SubTotaalCD + +SubTotaalSoundtrack + +TotaalVerzending;

    document.getElementById('Verzending').value = TotaalVerzending;
    document.getElementById('TotaalPrijs').value = Totaal;
}
<!-- user defines values here: -->
<input type="number" id="AantalBoek" required="" onchange="getAantal()">
<input type="number" id="AantalCD" required="" onchange="getAantal()">
<input type="number" id="AantalSoundtrack" required="" onchange="getAantal()">

<!--  set values for the products: -->
<input type="hidden" id="PrijsBoek" name="PrijsBoek" value="15">
<input type="hidden" id="PrijsCD" name="PrijsCD" value="4">
<input type="hidden" id="PrijsSoundtrack" name="PrijsSoundtrack" value="2">

<!-- set values for the delivery cost: -->
<input type="hidden" id="VerzendingBoek" name="VerzendingBoek" value="7">
<input type="hidden" id="VerzendingCD" name="VerzendingCD" value="2">

<!-- totals are shown here (only for autorespond) -->
<input type="hidden" id="Verzending" name="Verzending">
<input type="hidden" id="TotaalPrijs" name="TotaalPrijs">

标签: javascriptformsif-statementnull

解决方案


好的,我重新开始,再次查看 if 语句,发现语法错误,更改了条件并添加了 else 语句。

更正后的脚本是这样的:

function getAantal(){
var AantalBoek = document.getElementById('AantalBoek').value;
var AantalCD = document.getElementById('AantalCD').value;
var AantalSoundtrack = document.getElementById('AantalSoundtrack').value;

var PrijsBoek = document.getElementById('PrijsBoek').value;
var PrijsCD = document.getElementById('PrijsCD').value;
var PrijsSoundtrack = document.getElementById('PrijsSoundtrack').value;

var VerzendingBoek = document.getElementById('VerzendingBoek').value; 
/* Here I changed the condition: IF the user value is 0 then the delivery cost is 0, 
ELSE use the value that was already defined:*/
if(AantalBoek == 0) { VerzendingBoek = 0;
} else {VerzendingBoek = document.getElementById('VerzendingBoek').value;
}
var VerzendingCD = document.getElementById('VerzendingCD').value;
if(AantalCD == 0) { VerzendingCD = 0;
} else {VerzendingCD = document.getElementById('VerzendingCD').value;
}
/*for the second condition i corrected the syntax error !== to !=, 
IF delivery cost for Boek is not 0, then delivery cost for CD is 0*/
if (VerzendingBoek != 0) { VerzendingCD = 0;
}

var SubTotaalBoek = PrijsBoek * AantalBoek;
var SubTotaalCD = PrijsCD * AantalCD;
var SubTotaalSoundtrack = PrijsSoundtrack * AantalSoundtrack;

var TotaalVerzending = +VerzendingBoek + +VerzendingCD;

var Totaal = +SubTotaalBoek + +SubTotaalCD + +SubTotaalSoundtrack + +TotaalVerzending;

document.getElementById('Verzending').value=TotaalVerzending;
document.getElementById('TotaalPrijs').value=Totaal;
}

推荐阅读