Как я могу продолжить JavaScript-оператор if .. else if, пока не получу действительный ввод? - PullRequest
1 голос
/ 05 августа 2011

Как я могу продолжать запрашивать у пользователя действительный ответ, используя операторы if ... else if? Мой скрипт в данный момент работает один раз, но потом ломается:

var enterNum = prompt("Please enter a number between 1 and 100", "");


if (isNaN(enterNum)){
    enterNum = prompt("You did not enter a valid number. Please try again", "")
}
else if (enterNum < 1 || enterNum >100){
    enterNum = prompt("Your number is not between 1 and 100. Please try again", "")
}
else{
    document.write("Your number is ", enterNum)
}

Заранее спасибо!

Ответы [ 5 ]

9 голосов
/ 05 августа 2011
var enterNum = prompt("Please enter a number between 1 and 100", "");

while(isNaN(enterNum) || enterNum < 1 || enterNum >100) {
    enterNum = prompt("You did not enter a valid number. Please try again", "")
}
document.write("Your number is ", enterNum)
1 голос
/ 05 августа 2011
var valid = false;
var msg = "Please enter a number between 1 and 100";

while(!valid){
    var enterNum = prompt(msg, "");

    if (isNaN(enterNum)){
        msg = "You did not enter a valid number. Please try again";
    }
    else if (enterNum < 1 || enterNum >100){
        msg = "Your number is not between 1 and 100. Please try again";
    }
    else{
        valid = true;
        document.write("Your number is ", enterNum)
    }
}

Существует множество других способов сделать подобное, в зависимости от стиля.Это пошло для удобства чтения.Может также исключить переменную valid и просто иметь while(true), а затем break, если введенные данные верны.document.write также может быть через некоторое время.

1 голос
/ 05 августа 2011

Вы не можете с только если / иначе.Используйте петлю.Пример:

var enterNum = prompt("Please enter a number between 1 and 100", "");
while(true)
{
  if (isNaN(enterNum)){
      enterNum = prompt("You did not enter a valid number. Please try again", "")
  }
  else if (enterNum < 1 || enterNum >100){
      enterNum = prompt("Your number is not between 1 and 100. Please try again", "")
  }
  else
    break;
}
document.write("Your number is ", enterNum)
0 голосов
/ 05 августа 2011

Я ненавижу javascript, поэтому мой синтаксис, вероятно, отключен, но что-то вроде:

var isValid = false;
var message = "Please enter a number between 1 and 100";

while(isValid == false)
{
    var enterNum = prompt(message, "");

    if (isNaN(enterNum)){
        isValid = false;
        message = "You did not enter a valid number. Please try again";
    }
    else if (enterNum < 1 || enterNum >100){
        isValid = false;
        message = "Your number is not between 1 and 100. Please try again";
    }
    else{
        isValid = true;
        document.write("Your number is ", enterNum)
    }
}

Использование цикла do / while может быть немного лучше.

0 голосов
/ 05 августа 2011

используйте цикл while вместо

http://help.dottoro.com/ljqepqhd.php#dowhile

или

http://help.dottoro.com/ljqepqhd.php#while

...