Ну, во-первых, у вас слишком много тестов.Поскольку вы хотите сделать то же самое, если пользователю 18 или больше 18 лет, вы можете объединить эти два.
И поскольку у вас есть только два условия и результаты, касающиеся возраста, вы можете повернуть другое if
проверить ветку else
, чтобы была введена только одна ветвь теста.
Но вы не проверяете вводимые пользователем данные в соответствии с вашим регулярным выражением.Есть несколько способов сделать это, но простой метод .test()
поможет.Даже если бы это был способ проверки регулярного выражения, ваш последний =
должен был бы быть ==
, чтобы вы могли выполнять сравнение, а не присваивание.
См. Ниже:
var age = prompt("please enter your age");
// First just test to see if they entered letters or not
if(testInput(age)){
// Some letters were entered...
alert("please enter a valid number");
age = prompt("please enter your age");
testInput(age); // test again
}
// When there are only numbers...
if (age >= 18) {
alert("welcome to our website");
} else {
alert("you aren't allowed to visit this website");
window.close();
}
// This function will accept a string
function testInput(age){
var letters = /^[A-Za-z]+$/;
// And return true or false based on testing the string
// against the regular expression.
return letters.test(age);
}