关于 JavaScript 的问题:我如何 "reset" 切换语句?
Q about JavaScript: how can i "reset" switch statement?
switch 语句有不同的情况,但默认情况下,系统会提示用户输入新值。
我希望针对不同的情况检查新值。如果大小写匹配,则执行相应的代码。但否则,它将进入默认状态并重新提示。
如何编写代码来重新检查 switch 语句中的表达式?
var anyLetter;
anyLetter = prompt("Enter one of the following letters (b, o, or h): ");
switch(anyLetter)
{
case "b":
case "B":
//code if user enters b or B
break;
case "o":
case "O":
//code
break;
case "h":
case "H":
//code
break;
default:
var anyLetterAgain;
anyLetterAgain = prompt("Enter one of the following letters (b, o, or h): ");
}
我希望通过 switch 语句将用户为 anyLetterAgain 输入的内容 运行 继续,直到输入 b、o 或 h。请帮忙!谢谢
对于default
.
的情况,只需再次调用您的开关块代码所在的函数即可
例如:
function askForLetter() {
var anyLetter;
anyLetter = prompt("Enter one of the following letters (b, o, or h): ");
switch(anyLetter){
case "b":
case "B":
//code if user enters b or B
break;
case "o":
case "O":
//code
break;
case "h":
case "H":
//code
break;
default:
askForLetter();
}
}
也许使用while循环更合适。例如:
var good = false
while (!good) {
var l = prompt("Enter one of the following letters (b, o, or h): ");
if (l == 'o' || l == 'O' || l == 'b' || l == 'B' || l == 'h' || l == 'H') {
good = true;
MyOtherFunction(l); //handle the user input here
}
}
只是一个想法...
虽然上面的所有答案都是正确的,但我需要指出的是,当您需要包含新选项时,需要对条件进行额外修改,其次,在这种很容易修复的状态下,很难检索到字母本身,但是由于它的递归性质,它可能会在某些极端情况下导致堆栈溢出(注意讽刺意味)。
这是我的代码版本:
var anyLetter = '';
while (anyLetter == '')
{
anyLetter = getMyLetter();
}
console.log("MyLetter:", anyLetter);
function getMyLetter()
{
var letter = prompt("Enter one of the following letters (b, o, or h): ");
switch(letter)
{
case "b":
case "B":
{
//code if user enters b or B
break;
}
case "o":
case "O":
{
//code
break;
}
case "h":
case "H":
{
//code
break;
}
default:
{
letter = '';
}
}
return letter;
}
switch 语句有不同的情况,但默认情况下,系统会提示用户输入新值。
我希望针对不同的情况检查新值。如果大小写匹配,则执行相应的代码。但否则,它将进入默认状态并重新提示。
如何编写代码来重新检查 switch 语句中的表达式?
var anyLetter;
anyLetter = prompt("Enter one of the following letters (b, o, or h): ");
switch(anyLetter)
{
case "b":
case "B":
//code if user enters b or B
break;
case "o":
case "O":
//code
break;
case "h":
case "H":
//code
break;
default:
var anyLetterAgain;
anyLetterAgain = prompt("Enter one of the following letters (b, o, or h): ");
}
我希望通过 switch 语句将用户为 anyLetterAgain 输入的内容 运行 继续,直到输入 b、o 或 h。请帮忙!谢谢
对于default
.
例如:
function askForLetter() {
var anyLetter;
anyLetter = prompt("Enter one of the following letters (b, o, or h): ");
switch(anyLetter){
case "b":
case "B":
//code if user enters b or B
break;
case "o":
case "O":
//code
break;
case "h":
case "H":
//code
break;
default:
askForLetter();
}
}
也许使用while循环更合适。例如:
var good = false
while (!good) {
var l = prompt("Enter one of the following letters (b, o, or h): ");
if (l == 'o' || l == 'O' || l == 'b' || l == 'B' || l == 'h' || l == 'H') {
good = true;
MyOtherFunction(l); //handle the user input here
}
}
只是一个想法...
虽然上面的所有答案都是正确的,但我需要指出的是,当您需要包含新选项时,需要对条件进行额外修改,其次,在这种很容易修复的状态下,很难检索到字母本身,但是由于它的递归性质,它可能会在某些极端情况下导致堆栈溢出(注意讽刺意味)。 这是我的代码版本:
var anyLetter = '';
while (anyLetter == '')
{
anyLetter = getMyLetter();
}
console.log("MyLetter:", anyLetter);
function getMyLetter()
{
var letter = prompt("Enter one of the following letters (b, o, or h): ");
switch(letter)
{
case "b":
case "B":
{
//code if user enters b or B
break;
}
case "o":
case "O":
{
//code
break;
}
case "h":
case "H":
{
//code
break;
}
default:
{
letter = '';
}
}
return letter;
}