提示用户输入特定输入,循环和提示,直到输入正确的输入

时间:2015-06-10 21:46:42

标签: javascript

我是新来的,目前正在学习JavaScript。在下面的代码中,如何让它循环并仍然提示,例如,例如用户不输入1或-1?而不是使用else语句输出"这不是有效的输入,"我希望它再次提示用户,直到他们输入所需的输入。我没有完全通过while循环得到你想要的东西。

var myShopping = ["Eggs", "Milk", "Potatoes", "Cereal", "Banana"];
var ord = prompt("Enter 1 for alphabetical order, " +
"and -1 for reverse order", 1);

if (ord == 1) {
    myShopping.sort();
    document.write(myShopping.join("<br />"));
} else if (ord == -1) {
    myShopping.sort();
    myShopping.reverse();
    document.write(myShopping.join("<br />"));
} else {
    document.write("That is not a valid input");
}

3 个答案:

答案 0 :(得分:1)

这基本上是伪代码,但应该让你走上正确的轨道..不想给你一切!最好的学习方法是通过反复试验:)

var myShopping = ["Eggs", "Milk", "Potatoes", "Cereal", "Banana"];
while(true){
   //prompt here
   if(ord == 1){
       //do stuff
       break;
   }
   else if(ord == -1){
       //do stuff
       break;
   }
   else {
       //bad input
   }
}

我们不希望每次进行循环时都创建myShopping变量,所以我们把它放在循环之外......提示必须在内部,因为它们会放入一个坏字符,以便它再次提示它们

一些说明: document.write已经很老了,看起来非常糟糕,所以你应该尝试提出一个更好的方法来做到这一点...你也可能想把if语句的逻辑放在你调用的函数中,这样你的代码很整洁

如果你想把它放在一个函数中,那么我可能会做这样的事情。

var doStuff = function(userInput){
    if(userInput == 1){
       //do stuff
       return true;
   }
   else if(userInput == -1){
       //do stuff
       return true;
   }
   else {
       //bad input
       return false;
   }
};

var myShopping = ["Eggs", "Milk", "Potatoes", "Cereal", "Banana"];
while(true){
    //prompt here
    var ord = prompt(... etc.);
    var toEndLoop = doStuff(ord);
    if(toEndLoop){
        break;
    } else {
        // they dun goofed.. tell them it was bad input and the prompt will happen again
    } 
}

答案 1 :(得分:0)

var valid_ans = false;
while(!valid_ans) { // repeat this block until valid_ans is true
       // your code
       If (prompt===1 || prompt===-1) {
            valid_ans = true;
        }
  }

上面的代码应该会给你一个想法。请记住,您的浏览器不喜欢多个提示。连续两次提示后,浏览器会询问用户是否应禁止提示。

答案 2 :(得分:0)

您可以像这样使用while循环:

...
var promptText = "Your text";
var input = prompt(promptText);
while(input !== "1" && input !== "-1"){
  input = prompt("Your answer was not correct\n"+promptText);
}