Вы никогда не вызываете функцию validateUserChoice(stInput)
.Вот измененная версия вашего кода:
var entering = confirm('Confirm to add state or territory');
if (!entering) {
return;
} else {
while (true) {
stInput = prompt('Enter state or territory');
// validate the state/territory and continue to prompt the user
// until they enter correct data.
while(!validateUserChoice(stInput)) {
alert("invalid state or territory");
stInput = prompt('Enter state or territory');
}
function validateUserChoice(stInput) {
// put all valid entries into an array
var validInputs = [
"Queensland",
"New South wales",
"Victoria",
"Tasmania",
"Northern Territory",
"Western Australia",
"South Australia",
"Australian Capital Territory"
]
// if the user's input exists in the array the index will be > -1, otherwise the users
// input is invalid.
return validInputs.indexOf(stInput) > -1;
}
populationInput = parseInt(prompt('Enter population for ' + stInput + ''));
while(isNaN(populationInput)) {
alert('Your input was invalid');
populationInput = parseInt(prompt('Enter population for ' + stInput + ''));
}
changeInput = parseFloat(prompt('Enter growth rate for ' + populationInput + ''));
while(isNaN(changeInput)) {
alert('Your input was invalid');
changeInput = parseFloat(prompt('Enter growth rate for ' + populationInput + ''));
}
break;
}
}
Вместо того, чтобы проверять каждую строку в отдельности, я собрал все возможные записи состояния / территории в массив, что позволяет просто проверить наличиепользовательский ввод в этом массиве.Если он существует, то пользовательский ввод действителен, в противном случае он недействителен.
Кроме того, я добавил еще один вариант «пока», который будет продолжать запрашивать у пользователя действительное состояние или территорию до тех пор, пока они не предоставят одно, очень похожее наВы сделали для других точек входа.
Стоит отметить, что эта проверка чувствительна к регистру.То есть «Квинсленд» действителен, а «Квинсленд» - нет.Кроме того, выбор «Отмена» в приглашении также считается неверным вводом.Эти сценарии, вероятно, должны быть обработаны.