Как прервать выполнение условия if в функции?
При вводе в prompt пустой строки или букв выдается окно 'Было введено не число, попробуйте еще раз' и должно снова всплыть окно с полем ввода, но всплывает 'Родители разрешили?' . Как сделать так, чтобы при вводе пустой строки или букв, выводилось 'Было введено не число, попробуйте еще раз' и снова был возврат в поле ввода? То есть пока пользователь не введет возраст, будет возврат к полю ввода. Я думал может это как-то можно сделать через цикл и break и continue, но так и не понял как.
let age = prompt('Сколько вам лет?', '');
function checkAge(age) {
if (isNaN(age) || age === '') alert('Было введено не число, попробуйте еще раз');
if (age > 18) return true;
else return confirm('А родители разрешили?');
}
if (checkAge(age)) {
alert('Доступ получен');
} else {
alert('Доступ закрыт');
}
Ответы (1 шт):
Оборачиваем ваши вопросы в цикл while. Повторяем до тех пор, пока пользователь не введет цифры или не закроет страницу
let age = '';
let ask = true;
function checkAge(age) {
if (!age) return false; // Если нажмут отмену придет null, при проверке на isNaN будет true
if (isNaN(age) || age === '') {
alert('Было введено не число, попробуйте еще раз');
return false;
}
ask = false
if (parseInt(age) > 18) return true;
else return confirm('А родители разрешили?');
}
while (ask) {
age = prompt('Сколько вам лет?', '');
if (checkAge(age)) {
alert('Доступ получен');
} else {
alert('Доступ закрыт');
}
}
Более правильнее было бы разнести ваши вопросы для пользователя
let age = '';
let ask = true;
function checkAge(age) {
if (!age) return false;
if (isNaN(age)) {
alert('Было введено не число, попробуйте еще раз');
return false;
}
return true
}
while (ask) {
age = prompt('Сколько вам лет?', '').trim();
ask = !checkAge(age);
}
if (Number(age) < 18 ? confirm('А родители разрешили?') : true) {
alert('Доступ получен');
} else {
alert('Доступ закрыт');
}