Мне нужно создать калькулятор цен на билеты, который также рассчитывает размер и сумму доплаты.
Мой переключатель для цены билета работает, но один для ставки доплаты возвращается как NaN после того, как я ввел случай в подсказке.
Я преобразовал значение, которое функция surchargeRate (cardType) возвращает в число, но по какой-то причине оно все еще дает мне NaN.
Я пытался выяснить, в чем проблема но не смог понять.
Вот мой код:
function surchargeRate(cardType) {
var surchargeRate;
switch (cardType) {
case "1":
surchargeRate = 0.02;
break;
case "2":
surchargeRate = 0.01;
break;
} // end switch
return surchargeRate;
}
// This function calculates the surcharge amount.
function surchargeAmount(ticketCost, surchargeRate) {
return ticketCost * surchargeRate;
}
function determineTicketPrice(seatingAreaCategory) {
var ticketPrice;
switch (seatingAreaCategory) {
case "S":
case "s":
ticketPrice = 180;
break;
case "C":
case "c":
ticketPrice = 150;
break;
case "B":
case "b":
ticketPrice = 100;
break;
case "R":
case "r":
ticketPrice = 70;
break;
default:
ticketPrice = 0;
break;
} // end switch
return ticketPrice;
}
function totalAmount(ticketPrice, ticketQty) {
return ticketPrice * ticketQty;
}
function validateQty(ticketQty) {
if (ticketQty >= 1 && ticketQty <= 20) {
return true;
} else {
alert("Ticket number must be between 1 and 20");
return false;
}
}
function init() {
surchargeRate = surchargeRate(cardType);
surchargeRate = Number(surchargeRate);
var surcharge;
var finalCost;
if (surchargeRate == -1) {
surchargeRate = new Error("Invalid input");
} else {
surcharge = surchargeAmount(ticketCost, surchargeRate);
}
finalCost = surcharge + ticketCost;
var seatingAreaCategory;
seatingAreaCategory = prompt("Please enter seating area category: ");
var ticketPrice = determineTicketPrice(seatingAreaCategory);
ticketPrice = Number(ticketPrice);
var ticketQty;
ticketQty = prompt("Please enter ticket quantity: ");
ticketQty = Number(ticketQty);
var ticketCost;
ticketCost = totalAmount(ticketPrice, ticketQty);
var cardType;
cardType = prompt("Enter your Card type. Enter 1 for American Express and 2 for Visa/Mastercard ");
var validQty = validateQty(ticketQty);
console.log(cardType);
console.log(surchargeRate);
var seatOut = document.getElementById("seatingArea").innerHTML = "Your seating area is: " + seatingAreaCategory;
var priceOut = document.getElementById("pricePerTicket").innerHTML = "Price per ticket: " + ticketPrice;
var validQtyOut = document.getElementById("ticketQty").innerHTML = "Number of tickets ordered: " + ticketQty.toFixed(2);
var beforeSurchargeOut = document.getElementById("beforeSurcharge").innerHTML = "Gross amount: " + ticketCost;
var surchargeOut = document.getElementById("surcharge").innerHTML = "Card fee: " + surcharge;
var costOut = document.getElementById("amountDue").innerHTML = "Amount due: " + finalCost;
}
window.onload = init;