Если используется одно «если», я не хочу, чтобы другие использовались. - PullRequest
0 голосов
/ 24 ноября 2018

Если я наберу 18, появятся следующие ответы от других if.

var age = prompt("please enter your age")

var letters = /^[A-Za-z]+$/;

if (age == 18) {
  alert("welcome to our website")
}
if (age > 18) {
  alert("welcome to our website")
}
if (age < 18) {
  alert("you aren't allowed to visit this website")
  window.close()
}
if (age = letters) {
  alert("please enter a valid number")
  prompt("please enter your age")
}

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

function validateAge() {

  var age = prompt("please enter your age")
  // var letters = /^[A-Za-z]+$/;
  // if input will be any other symbol besydes letters&digits no alerts in that case
  // \D "not digit" would be better regexp
  var notDigit = /^\D+$/;
  // you can use 'greater or equal >=' & 'less or equal <='
  if (age >= 18) {
    alert("welcome to our website")
  }
  if (age < 18) {
    alert("you aren't allowed to visit this website")
    window.close()
  } // you know regular expressions but not the functhions to work with? 
  if (age && age.match(notDigit)) {
    alert("please enter a valid number")
    validateAge()
  }
}

validateAge()
0 голосов
/ 24 ноября 2018

Ну, во-первых, у вас слишком много тестов.Поскольку вы хотите сделать то же самое, если пользователю 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...