关于JavaScript的问:如何“重置”switch语句?

时间:2015-04-09 01:09:28

标签: javascript 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): "); 
}

我希望用户为anyLetterAgain输入的内容通过switch语句运行,并继续直到输入b,o或h。请帮忙!感谢

3 个答案:

答案 0 :(得分:1)

使用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
  } 
}




只是一个想法...

答案 1 :(得分:0)

只需调用切换块代码所在的函数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();  
    }
}

答案 2 :(得分:0)

虽然上面的所有答案都是正确的,但我需要指出当你需要包含新选项时需要对条件进行额外的修改,而第二个将很难在这种状态下检索字母本身,这很容易解决,但是由于它的递归性质,它可能会在某些极端情况下导致堆栈溢出(请注意具有讽刺意味)。 这是我的代码版本:

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;
}