Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在while循环中计算多个条件_Javascript_If Statement_While Loop_Alert - Fatal编程技术网

Javascript在while循环中计算多个条件

Javascript在while循环中计算多个条件,javascript,if-statement,while-loop,alert,Javascript,If Statement,While Loop,Alert,下面的代码应该一直要求用户从阵列中随机选择一种乐器,直到他们找到正确的为止。它应该计算猜测的数量,然后评估每个猜测,并确定它是按字母顺序高于还是低于随机数字。 由于某些原因,我的If语句似乎工作不正常。在示例中,如果我输入一个不在列表中的项目,代码将不会按预期返回1号警报。即使仪器输入正确,代码也不会返回任何信息,而不会返回预期的最后一次警报。非常感谢您的帮助 var MyInstrument; var guess_input_text; var guess_input; var fini

下面的代码应该一直要求用户从阵列中随机选择一种乐器,直到他们找到正确的为止。它应该计算猜测的数量,然后评估每个猜测,并确定它是按字母顺序高于还是低于随机数字。 由于某些原因,我的
If
语句似乎工作不正常。在示例中,如果我输入一个不在列表中的项目,代码将不会按预期返回1号警报。即使仪器输入正确,代码也不会返回任何信息,而不会返回预期的最后一次警报。非常感谢您的帮助

var MyInstrument;
var guess_input_text;   
var guess_input;
var finished = false;   
var guess_counter = 0;

function My_instrument()
{
        var instruments = ['violin', 'drums', 'pipe', 'harp', 'xylophone'];
        instruments.sort();
        var randomInstrument = Math.floor(Math.random()*instruments.length);
        MyInstrument = instruments[randomInstrument];

        while (!finished) {
            guess_input_text = prompt("I'm thinking of one of these instruments \n" 
            + instruments + "\n can you guess which one it is?"
            );
            var guess_input = instruments.indexOf(guess_input_text);
            alert(guess_input);
            guess_counter++;
            finished = check_guess();
        }
}

function check_guess() 
{
        if (guess_input == -1)
        {
          alert("you have not entered instrument from the list");
          return false;
        }

        if (guess_input != -1 && guess_input_text > MyInstrument)
        {
          alert("your instrument is alphabetically higher than mine");
          return false;
        }

        if (guess_input != -1 && guess_input_text < MyInstrument)
        {
          alert("your instrument is alphabetically lower than mine");
          return false;
        }

        alert("You got it! The instrument was " + target + 
              ".\n\nIt took you " + guess_counter + " guesses to get it!");
        return true;
}

My_instrument();
var-MyInstrument;
变量猜测输入文本;
var-u输入;
var finished=false;
var_计数器=0;
函数My_instrument()
{
var乐器=[‘小提琴’、‘鼓’、‘管’、‘竖琴’、‘木琴’];
仪器。排序();
var randomInstrument=Math.floor(Math.random()*instruments.length);
MyInstrument=仪器[随机仪器];
当(!完成){
guess\u input\u text=prompt(“我正在考虑这些仪器中的一种\n”
+仪器+“\n您能猜出是哪一个吗?”
);
var guess\u input=instruments.indexOf(guess\u input\u text);
警报(猜测输入);
猜一猜计数器++;
完成=检查猜测();
}
}
函数检查_guess()
{
如果(猜测输入==-1)
{
警报(“您尚未从列表中输入仪器”);
返回false;
}
如果(猜测输入!=-1&&guess输入文本>我的仪器)
{
警惕(“你的乐器按字母顺序比我的高”);
返回false;
}
如果(猜测输入!=-1&&猜测输入文本
检查猜测()中的最后一个警报中

目标
未定义


将其替换为
MyInstrument

如果未获取guess\u输入变量,请重新初始化该变量,将其与函数一起传递或从函数内部删除var。控制台中是否出现任何错误?请注意,您不需要在第二个和后续的if条件中测试-1,因为如果是-1,则第一个if将捕获并返回该值。全局变量
guess\u input
正在被同名的本地变量覆盖。请从此行中删除var<代码>变量猜测输入=仪器.indexOf(猜测输入文本)您已经将其声明为全局变量。