1

如何使用 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)
}

提前致谢!

4

5 回答 5

9
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)
于 2011-08-05T18:43:19.807 回答
1

你不能只用 if/else。使用循环。例子:

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)
于 2011-08-05T18:43:10.777 回答
1
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)。也可能在一段时间之后breakdocument.write

于 2011-08-05T18:44:17.550 回答
0

改用while循环

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

或者

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

于 2011-08-05T18:43:38.530 回答
-1

我讨厌 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 循环可能会更整洁一些。

于 2011-08-05T18:49:28.277 回答