Попытка очистить ввод с помощью метода isNaN, но он прерывает цикл while - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь написать код для проекта, который требует, чтобы я попросил пользователя ввести число.У меня есть код, настроенный таким образом, что он принимает только числа и работает с ними, но он не очищает ввод до конца.Я попытался использовать метод inNaN и цикл while, чтобы код продолжал работать до тех пор, пока пользователь не введет действительное число, но когда он идентифицирует NaN, происходит сбой.Вот мой код ниже:

  var userMin = Number(prompt("Name a minimum number to begin your range. 
  Only numbers, please.")); //This is the prompt that asks for the number
  var repuserMin = true; //This is the beginning of the while loop
  while (repuserMin){
  if (isNaN(userMin)) {
  repuserMin = true; //Where the if statement glitches, JSFiddle crashes at this point
  } else {repuserMin = false;}}

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вам необходимо изменить userMin внутри цикла, предлагая пользователю обновить значение, если его запись не является числом:

var userMin = Number(prompt("Name a minimum number to begin your range. Only numbers, please.")); //This is the prompt that asks for the number

var repuserMin = true; // Trigger the loop by default

while (repuserMin) {
  if (isNaN(userMin)) {
    userMin = Number(prompt("Name a minimum number to begin your range. Only numbers, please."));
  } else {
    repuserMin = false; // Break out of the loop
    console.log('Number was entered');
  }
}
0 голосов
/ 31 мая 2018

Да, это приведет к сбою, потому что вы пытаетесь запустить там бесконечный цикл while.

Вам необходимо каждый раз принимать данные от пользователя внутри цикла.

var repuserMin = true; //This is the beginning of the while loop
var userMin;
while (repuserMin) {
  userMin = Number(prompt("Name a minimum number to begin your range. Only numbers, please.")); //This is the prompt that asks for the number
  if (isNaN(userMin)) {
    repuserMin = true; //Where the if statement glitches, JSFiddle crashes at this point
  } else {
    repuserMin = false;
  }
}

РЕДАКТИРОВАТЬ

Вам необходимо разобраться со случаем, когда пользователь ничего не введет.isNaN('') --> false

while (true) {
  var userMin = Number(prompt("Name a minimum number to begin your range. Only numbers, please.")); //This is the prompt that asks for the number  
  if (!isNaN(userMin) && userMin) {
    break;
  }
}
...