多个if条件语句javascript / html

时间:2016-10-09 10:19:49

标签: javascript

我试图写一个条件:

  • 如果A为真且B不为,则显示error_message_1
  • 如果B为真且A不为,则显示error_message_2
  • 如果A和B都不为真,则显示error_message_3

首先,我尝试在同一个if ... else if语句中编写所有条件但是它非常令人困惑所以我尝试将它们放在不同的if语句中,其代码如下所示。这个问题是第三个条件语句总是被第一个条件覆盖。

使用html和javascript的代码:



function calculatePrice() {
    var tourType;
    var payDate;
    var returnTrip;
    var extra = 0;
    var tourCost = 0;
    var discount = 0;

    for (var i = 1; i <= 3; i++) {
        tourType = document.getElementById("ans" + i);
        if (tourType.checked == true) {
            tourCost += parseFloat(tourType.value);
        }
    }

    if (tourCost == 0 && discount !== 0) {
        alert("Please select a Tour type");
        return;
    }

    for (var a = 1; a <= 3; a++) {
        payDate = document.getElementById("date" + a);
        if (payDate.checked == true) {
            discount += parseFloat(payDate.value);
         }
    }

    if (discount == 0 && tourType !== 0) {
        alert("Please select a Payment date.");
        return;
    }

    for (var u = 1; u <= 1; u++) {
        returnTrip = document.getElementById("return" + u);
        if (returnTrip.checked == true) {
            extra += parseFloat(returnTrip.value);
        }
    }

    tourCost = tourCost - discount * tourCost + extra
    tourCost = parseInt(tourCost)
    if (tourCost == 0 && discount == 0) {
        alert("Please select a Tour Type and Payment Date.");
        return; 
    } else {
        alert("The approximate cost of the holiday is $" + tourCost);
        return;
    }
}
&#13;
<h1>Calculator</h1>
<p>Complete the form</p>
<form name="packages">
    <p>
        Tour type:<br>
        <input type="radio" name="tour" id="ans1" value="3900"><label for="ans1">5-day Escape Tour</label><br>
        <input type="radio" name="tour" id="ans2" value="5100"><label for="ans2">7-day Splendour Tour</label><br>
        <input type="radio" name="tour" id="ans3" value="6600"><label for="ans3">10-day Best Tour</label>
    </p>
    <p>
        Payment date:<br>
        <input type="radio" name="dates" id="date1" value="0.1"><label for="date1">Before 1st November 2016</label><br>
        <input type="radio" name="dates" id="date2" value="0.07"><label for="date2">Between 1st November and 31st December 2016</label><br>
        <input type="radio" name="dates" id="date3" value="0.05"><label for="date3">After 31st December 2016</label>
    </p>
    <p> 
        <label for="return1">Click here if you want to include a return airfare from Australia:</label><input type="checkbox" name="return" id="return1" value="900"> 
    </p>
    <p>
        <input type="submit" value="Calculate" onclick="calculatePrice();"><input type="reset" value="Reset">
    </p>
</form>
&#13;
&#13;
&#13;

基本上我最初尝试做的是查看是否选择了任何单选按钮,并根据这些条件确定条件。我尝试使用if(button.selected),但因为每个单选按钮都有不同的ID,所以它太长了,我不知道如何将它们组合成一个我可以使用的变量。

2 个答案:

答案 0 :(得分:0)

  
      
  • 如果A为真且B不为,则显示error_message_1
  •   
  • 如果B为真且A不为,则显示error_message_2
  •   
  • 如果A和B都不为真,则显示error_message_3
  •   

最好先写完最后一个条件:

if (!A && !B) {                 // both are false
    display(error_message_3);
} else if (!A) {                // if A is false here, B must be true
    display(error_message_2);  
} else if (!B) {                // if B is false here, A must be true
    display(error_message_1);
} else {                        // both are true
    display(no_error);
}

答案 1 :(得分:-1)

您提出的条件是:

如果A为真且B不为,则显示error_message_1

如果B为真且A不为,则显示error_message_2

如果A和B都不为真,则显示error_message_3

要检查某些事情是否属实,您需要检查它是否等于1,而不是零。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">

<title>Travel Agency</title>

<script type="text/javascript">

    function calculatePrice() {

    var tourType;
    var payDate;
    var returnTrip;
    var extra = 0;
    var tourCost = 0;
    var discount = 0;

    for (var i = 1; i <= 3; i++) {
        tourType = document.getElementById("ans" + i);
            if (tourType.checked == true) {
                tourCost += parseFloat(tourType.value);
            }
    }

    if (tourCost == 1 && discount !== 1) {
        alert("Please select a Tour type");
        return;
    }

    for (var a = 1; a <= 3; a++) {
        payDate = document.getElementById("date" + a);
        if (payDate.checked == true) {
            discount += parseFloat(payDate.value);
        }
    }

    if (discount == 1 && tourType !== 1) {
        alert("Please select a Payment date.");
        return;
    }

    for (var u = 1; u <= 1; u++) {
        returnTrip = document.getElementById("return" + u);
        if (returnTrip.checked == true) {
            extra += parseFloat(returnTrip.value);
        }
    }

    tourCost = tourCost - discount * tourCost + extra
    tourCost = parseInt(tourCost)
        if (tourCost !== 1 && discount !== 1) {
            alert("Please select a Tour Type and Payment Date.");
            return; }
        else {
            alert("The approximate cost of the holiday is $" + tourCost);
            return; }

    }

</script>

</head>

<body>
    <h1>Calculator</h1>
    <p>Complete the form</p>

    <form name="packages">

        <p>
            Tour type:
            <br>
            <input type="radio" name="tour" id="ans1" value="3900"><label for="ans1">5-day Escape Tour</label>
            <br>
            <input type="radio" name="tour" id="ans2" value="5100"><label for="ans2">7-day Splendour Tour</label>
            <br>
            <input type="radio" name="tour" id="ans3" value="6600"><label for="ans3">10-day Best Tour</label>
        </p>

        <p>
            Payment date:
            <br>
            <input type="radio" name="dates" id="date1" value="0.1"><label for="date1">Before 1st November 2016</label>
            <br>
            <input type="radio" name="dates" id="date2" value="0.07"><label for="date2">Between 1st November and 31st December 2016</label>
            <br>
            <input type="radio" name="dates" id="date3" value="0.05"><label for="date3">After 31st December 2016</label>
        </p>

        <p> 
            <label for="return1">Click here if you want to include a return airfare from Australia:</label><input type="checkbox" name="return" id="return1" value="900"> 
        </p>

        <p>
            <input type="submit" value="Calculate" onclick="calculatePrice();"><input type="reset" value="Reset">
        </p>

    </form>

</body>

</html>

编辑: 嘿伙计们,基本上我最初想要做的就是看看是否选择了任何单选按钮并根据我的if条件。我尝试使用if (button.selected),但由于每个单选按钮都有不同的ID,它太长了,我不知道如何将它们组合成一个我可以使用的变量。