我是新来的,目前正在学习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");
}
答案 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);
}