循环只执行第一个语句

时间:2014-06-06 17:09:55

标签: javascript loops infinite-loop do-while

我正在练习循环,我想我会用一个简单的战斗来让它变得有趣。我不知道为什么,但doBattle循环只调用battleMenu而没有提醒任何其他东西。我错过了什么/误解了什么?欢迎任何有关改进代码的建议。

doBattle(player, goblin_01);

function battleMenu(){
        selection = prompt("\n Battle menu\n1: Attack\n2: Defend\n3: Abilities\n4: Status\n5: Enemy Status\n Enter a choice: ");
        // Checks for valid input
        while (selection > 5 || selection < 1){
            selection = prompt("Invalid choice.\n Enter a choice(1-5)");
        }
}

function doBattle(x,y){
    do { battleMenu();
        switch(selection){
            case 1: // do stuff
                break;
            case 2: // do other stuff
                break;
            case 3: // alternative stuff
                        break; 
            case 4: // not stuff but things
                break;
            case 5: // something irrelevant to the topic
                break;
                } // End of Selection Switch

            } while // condition that became false

    }
编辑:正如在OP中首先评论的那样,问题是我传递了一个String但是测试了整数。我忘了转换类型,偶数输入字符串。这些案件使代码复杂化,我假设这就是为什么它处于暂停状态。但希望现在它有用。

2 个答案:

答案 0 :(得分:1)

您的代码存在dataType selection变量问题。变量selection被视为String但在switch语句中您使用Integer dataType进行比较。因此,您可以使用dataType转换方法获取Integer值...

    var m=parseInt(selection);
      switch(m){
      ............
      ............

这是工作Fiddle

答案 1 :(得分:-1)

您的选择变量似乎未定义或传递给doBattle。尝试在代码顶部声明变量,声明播放器和goblin_01对象

相关问题