Необходимо проверить, является ли введенный пользователем номер. Код не работает, как задумано. Может кто-нибудь сказать мне, что не так? - PullRequest
0 голосов
/ 14 января 2019

Просто нужно проверить, что вводимые пользователем данные в приглашении - это число в Javascript

  var userAge = prompt("Please enter your age", "");
    if (typeof userAge == 'number') {
      document.write("You are " + userAge + " years old.");
    } else {
      document.write('Please enter a valid number');
    }

Когда я набираю свой возраст 28, чтобы проверить, я ожидаю, что "Вам 28 лет". будет напечатан в документе. Тем не менее, он печатает остальную часть кода: «Пожалуйста, введите правильный номер.»

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Любое число или значение, заключенное в одинарную или двойную кавычку в JavaScript, рассматривается как строка, поэтому typeof userAge равно 'string'.

Используйте этот код вместо:

var userAge = prompt("Please enter your age", "");

if (/^\d+[.]?\d+$/.test(userAge)) {
  document.write("You are " + userAge + " years old.");

} else {
  document.write('Please enter a valid number');
}
0 голосов
/ 14 января 2019

Просто конвертируйте в число с Number.parseInt(), затем используйте Number.isNaN(), например, так:

var userAge = parseInt(prompt("Please enter your age"));
if (isNaN(userAge)) {
  document.write('Please enter a valid number');
} else {
  document.write("You are " + userAge + " years old.");
}
0 голосов
/ 14 января 2019

Значение от prompt является string. Используйте isNaN вместо:

var userAge = prompt("Please enter your age", "");
if (isNaN(userAge)) {
  document.write('Please enter a valid number');
} else {
  document.write("You are " + userAge + " years old.");
}
...