Javascript - Make switch: 默认重启提示
Javascript - Make switch: default restart prompt
我想问用户一个简单的问题:
// Write your code below!
var food = prompt("Do you like waffles?");
switch (food) {
case "yes":
case "Yes":
alert("Good!");
break;
case "no":
case "No":
alert("But why!");
break;
default:
var food = prompt("That's not an answer, Do you like waffles?");
break;
}
默认设置有效但仅一次。如果 he/she 输入的答案不是无限地是或否,我想重新提示用户。这是怎么回事?
你没有任何机制来执行循环。尝试用 while
循环包围它。
您需要一种方法来重新评估第二个提示,因为它实际上不会去任何地方。您需要将其分开:
function askMe() {
var food = prompt("Do you like waffles?");
switch (food) {
case "yes":
case "Yes":
alert("Good!");
break;
case "no":
case "No":
alert("But why!");
break;
default:
askMe();
break;
}
}
askMe();
function askForFood( questionArgument ){
var food = prompt( questionArgument );
switch (food.toLowerCase()) { // be DRY! Use lowercase!
case "yes": // And lowercase it is!
alert("Good!");
break;
case "no":
alert("But why!");
break;
default:
askForFood("That's not an answer, Do you like waffles?"); // to hell with it
break;
}
}
askForFood("Do you like waffles?"); // First time ask nicely
为什么上面的方法有效?
导致使用能够重复工作更多次的function
。
只需将您的 "Question"
作为参数传递给函数即可。
case default:
使用相同的函数调用,但这次使用不同的问题。
P.S:由于使用了 toLowerCase()
,用户也可以编写 "yeS",您的程序将与朋友一起玩球而不用太在意...
如果不是为了学校,你也可以像这样玩你的代码(我喜欢!):
var questionary = {
"yes" : "Good!",
"no" : "But why!",
};
function askForFood( question ){
var answer = prompt( question ).toLowerCase();
if(answer in questionary) alert( questionary[answer] ); // Self explanatory
else askForFood( "That's not an answer" ); // ♫ do it again!
}
askForFood("Do you like waffles?");
我知道您已经收到了有效的答案,但这是 while 循环的完美应用,我看您还没有学会如何使用它们。看看它短了多少!
var food = "Do you like waffles?";
while ((food = window.prompt(food, "yes")) != "yes" && food != "no") {
food = "That\'s not an answer, do you like waffles?";
}
window.alert("You said " + food + ".");
这就是它的工作原理。
在while这个词之后,有一长行被方括号括起来的代码。这是一个条件。条件说 "if the answer provided isn't yes, and it isn't no" 。只要条件保持为真,while 循环就会重复。
首先,我将变量 food 设置为我要使用的消息。然后,在while循环的条件下,我创建了一个提示:
food = window.prompt(food, "yes")
您会注意到我在这里重用了我的旧食物变量。我不想创建一个新的,所以我重复使用了我的旧的。您会注意到我将提示中的消息设置为 food 变量的先前值。另请注意,为了用户友好,我将默认消息设置为 "yes" .
如果提示的值不等于是或否,它会将食物变量的值设置为我们的第二条消息。然后,它一次又一次地执行 while 循环的条件,直到我们得到是或否的答案。
最后,当用户回答是或否时,while 循环的条件不再为真,因此它跳过 while 循环告诉用户他们的答案。
最好尝试不同的做事方式,看看是否可以缩短代码并提高性能!只要确定你已经明确了要回答什么,否则用户将被无限重复的提示困住并且不知道该做什么,并且按取消也无济于事,因为它不是一个是或否的答案.
您甚至可以进一步改进此代码,方法是检查用户是否按下了“取消”,然后也停止 while 循环。
var food = "Do you like waffles?";
while ((food = window.prompt(food, "yes")) && food != "yes" && food != "no") {
food = "That\'s not an answer, do you like waffles?";
}
if (!food) {
window.alert("Aw, you cancelled out!");
} else {
window.alert("You said " + food + ".");
}
在这里,我改变了while循环中的条件。我们首先检查食物变量是否可以设置为提示!如果不能,那是因为用户必须按下取消。稍后,我们还检查是否设置了 food 变量,因为我们不想告诉用户他们说了什么,如果他们按下取消但什么也没说。
我想问用户一个简单的问题:
// Write your code below!
var food = prompt("Do you like waffles?");
switch (food) {
case "yes":
case "Yes":
alert("Good!");
break;
case "no":
case "No":
alert("But why!");
break;
default:
var food = prompt("That's not an answer, Do you like waffles?");
break;
}
默认设置有效但仅一次。如果 he/she 输入的答案不是无限地是或否,我想重新提示用户。这是怎么回事?
你没有任何机制来执行循环。尝试用 while
循环包围它。
您需要一种方法来重新评估第二个提示,因为它实际上不会去任何地方。您需要将其分开:
function askMe() {
var food = prompt("Do you like waffles?");
switch (food) {
case "yes":
case "Yes":
alert("Good!");
break;
case "no":
case "No":
alert("But why!");
break;
default:
askMe();
break;
}
}
askMe();
function askForFood( questionArgument ){
var food = prompt( questionArgument );
switch (food.toLowerCase()) { // be DRY! Use lowercase!
case "yes": // And lowercase it is!
alert("Good!");
break;
case "no":
alert("But why!");
break;
default:
askForFood("That's not an answer, Do you like waffles?"); // to hell with it
break;
}
}
askForFood("Do you like waffles?"); // First time ask nicely
为什么上面的方法有效?
导致使用能够重复工作更多次的function
。
只需将您的 "Question"
作为参数传递给函数即可。
case default:
使用相同的函数调用,但这次使用不同的问题。
P.S:由于使用了 toLowerCase()
,用户也可以编写 "yeS",您的程序将与朋友一起玩球而不用太在意...
如果不是为了学校,你也可以像这样玩你的代码(我喜欢!):
var questionary = {
"yes" : "Good!",
"no" : "But why!",
};
function askForFood( question ){
var answer = prompt( question ).toLowerCase();
if(answer in questionary) alert( questionary[answer] ); // Self explanatory
else askForFood( "That's not an answer" ); // ♫ do it again!
}
askForFood("Do you like waffles?");
我知道您已经收到了有效的答案,但这是 while 循环的完美应用,我看您还没有学会如何使用它们。看看它短了多少!
var food = "Do you like waffles?";
while ((food = window.prompt(food, "yes")) != "yes" && food != "no") {
food = "That\'s not an answer, do you like waffles?";
}
window.alert("You said " + food + ".");
这就是它的工作原理。
在while这个词之后,有一长行被方括号括起来的代码。这是一个条件。条件说 "if the answer provided isn't yes, and it isn't no" 。只要条件保持为真,while 循环就会重复。
首先,我将变量 food 设置为我要使用的消息。然后,在while循环的条件下,我创建了一个提示:
food = window.prompt(food, "yes")
您会注意到我在这里重用了我的旧食物变量。我不想创建一个新的,所以我重复使用了我的旧的。您会注意到我将提示中的消息设置为 food 变量的先前值。另请注意,为了用户友好,我将默认消息设置为 "yes" .
如果提示的值不等于是或否,它会将食物变量的值设置为我们的第二条消息。然后,它一次又一次地执行 while 循环的条件,直到我们得到是或否的答案。
最后,当用户回答是或否时,while 循环的条件不再为真,因此它跳过 while 循环告诉用户他们的答案。
最好尝试不同的做事方式,看看是否可以缩短代码并提高性能!只要确定你已经明确了要回答什么,否则用户将被无限重复的提示困住并且不知道该做什么,并且按取消也无济于事,因为它不是一个是或否的答案.
您甚至可以进一步改进此代码,方法是检查用户是否按下了“取消”,然后也停止 while 循环。
var food = "Do you like waffles?";
while ((food = window.prompt(food, "yes")) && food != "yes" && food != "no") {
food = "That\'s not an answer, do you like waffles?";
}
if (!food) {
window.alert("Aw, you cancelled out!");
} else {
window.alert("You said " + food + ".");
}
在这里,我改变了while循环中的条件。我们首先检查食物变量是否可以设置为提示!如果不能,那是因为用户必须按下取消。稍后,我们还检查是否设置了 food 变量,因为我们不想告诉用户他们说了什么,如果他们按下取消但什么也没说。