У вас есть проблема в этой части кода:
//obtain flight info
for (i=0; i<8; i++) {
if (got == flightNumber[i]) break;
//problem condition below?
else if (got !== flightNumber[i]); alert("The flight number you have entered is invalid. Please refresh page and try again."); return;
}//for
Прежде всего, точка с запятой в конце оператора else if
завершает оператор, а alert()
и return
являются срабатывает сразу после того, как элемент не найден в первом if
.
Во-вторых, даже если после else if
не будет точки с запятой, else if
будет вызываться сразу после проверки выше if
для первого элемента, если он не был найден. Итак, как вы написали, for
l oop всегда делает только одну итерацию, либо элемент найден, либо возвращается ошибка.
Вы можете исправить это следующим образом (не нужно else if
, вы можете использовать логическую переменную, чтобы отслеживать, был ли найден элемент или нет):
let found = false;
//obtain flight info
for (i=0; i<8; i++) {
if (got == flightNumber[i]) {
found = true;
break;
}
}//for
if(!found) {
alert("The flight number you have entered is invalid. Please refresh page and try again.");
return;
} else {
// print results
// ...
}
Вместо для l oop вы можете использовать метод array.indexOf()
, который находит первое вхождение элемента в массиве и возвращает индекс элемента в массиве или -1, если не найден, как показано ниже:
<html>
<head>
<title>KBOS Airport</title>
<script>
<!-- hide script away from browsers
function flightInfo(got) {
got = parseInt(got); // cast string to int for the indexOf method
//obtain flight info
let i = flightNumber.indexOf(got);
if (i == -1) {
alert("The flight number you have entered is invalid. Please refresh page and try again.");
return;
} else {
//print results
document.write('<table border=1 align="center"><tr bgcolor=#FFFFCC><th>'+ 'Here is your flight info:<br />' + '</th>');
document.write('<tr bgcolor=#DDDDDD><td> Airline: ' + airline[i] + '<br />' + '</tr>');
document.write('<tr bgcolor=#DDDDDD>' + '<td>' + 'Flight Number: ' + flightNumber[i] + '<br />' + '</td>' + '</tr>');
document.write('<tr bgcolor=#DDDDDD>' + '<td>' + 'Terminal: ' + terminal[i] + '<br />' + '</td>' + '</tr>');
document.write('<tr bgcolor=#DDDDDD>' + '<td>' + 'Gate: ' + gate[i] + '<br />' + '</td>' + '</tr>');
document.write('<tr bgcolor=#DDDDDD>' + '<td>' + 'Departure Time: ' + flttime[i] + "<br />" + '</td>' + '</tr>' + '</table>');
document.write('<h1 align="center">' + 'If your flight departure time is 1/2 hr from now, please proceed to the gate. <br/>' + '</h1>');
document.write('<h1 align="center">' + 'Thank you for choosing our airline. Have a safe and pleasnat trip. <br/>' + '</h1>');
}
}//flightInfo()
//define flight data
let airline = ["Lufthansa", "Swiss Air", "USAir", "Delta Air Lines", "British Airways", "Air France", "American Airlines", "United Airlines"];
let flightNumber = [356, 89, 1230, 952, 513, 910, 454, 350];
let terminal = ["E", "D", "A", "C", "B", "F", "G", "H"];
let gate = [5, 10, 3, 7, 1, 8, 12, 15];
let flttime = ["0600AM", "0623AM", "0644AM", "0700AM", "0704AM", "0825AM", "1000AM", "1030AM"];
//traveler flight
let input = prompt("Please, select your flight number: 356, 89, 1230, 952, 513, 910, 454 or 350", " ");
flightInfo(input);
-->
</script>
</head>
<body>
</body>