zahed
zahed

Reputation: 35

Error in JavaScript return code?

Here is the javascript code: There is an error in code where nightSurcharges is added to total cost even if pickUptime is less than 20.

function TaxiFare() {

    var baseFare = 2;
    var costPerMile = 0.50;
    var nightSurcharge = 0.50; // 8pm to 6am, every night //its flat 0.50 and not per mile
    var milesTravelled = Number(document.getElementById("miles").value) || 0;
    if ((milesTravelled < 1) || (milesTravelled > 200)) {
        alert("You must enter 1 - 200 miles");
        document.getElementById("miles").focus();
        return false;
    }

    var pickupTime = Number(document.getElementById("putime").value) || 0;
    if ((pickupTime == "") || (pickupTime < 0) || (pickupTime > 23)) {
        alert("The time must be 0-23 hours");
        document.getElementById("putime").focus();
        return false;
    }

    var cost = baseFare + (costPerMile * milesTravelled);

    // add the nightSurcharge to the cost if it is after
    // 8pm or before 6am
    if (pickupTime >= 20 || pickupTime < 6) {
        cost += nightSurcharge;
    }
    alert("Your taxi fare is $" + cost.toFixed(2));
}

I want nightSurcharge to be added only when pickupTime is >=20, but that's not working right now. Any help is appreciated. Thanks

Upvotes: 0

Views: 170

Answers (2)

jeremyharris
jeremyharris

Reputation: 7882

This seems obvious to me.

if (pickupTime >= 20 || pickupTime < 6) {
    cost += nightSurcharge;
}

This code right here adds nightSurcharge to the cost if pickupTime is greater than or equal to 20, OR less than 6. So of course it's added if it's less than 6.

if (pickupTime >= 20) {
    cost += nightSurcharge;
}

Now it will only add to it if it's greater or equal to 20.

Upvotes: 1

Gavriel
Gavriel

Reputation: 19237

your code is:

if (pickupTime >= 20 || pickupTime < 6)

so if pickupTime is less then 6 it'll enter the if as well

http://jsfiddle.net/7rdzC/

Upvotes: 0

Related Questions