Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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 循环不会因JS中的猜谜游戏而终止_Javascript_Html - Fatal编程技术网

Javascript 循环不会因JS中的猜谜游戏而终止

Javascript 循环不会因JS中的猜谜游戏而终止,javascript,html,Javascript,Html,在提示中,当最终用户键入“洋红”时,我的循环应该终止。目前没有。我错过了什么?我知道这是一个非常基本的颜色猜测游戏,我计划扩展它,但我想先修复它,然后再继续进行一些增强…谢谢 var target=“洋红”; 变量猜测输入文本; var-u输入; var finished=false; 函数do_game(){ 警报(“正确的颜色为“+目标+”!”; 当(!完成){ guess\u input\u text=prompt(“我正在考虑下列颜色之一:\n\n”+ 蓝色、青色、金色、灰色、绿色、洋

在提示中,当最终用户键入“洋红”时,我的循环应该终止。目前没有。我错过了什么?我知道这是一个非常基本的颜色猜测游戏,我计划扩展它,但我想先修复它,然后再继续进行一些增强…谢谢

var target=“洋红”;
变量猜测输入文本;
var-u输入;
var finished=false;
函数do_game(){
警报(“正确的颜色为“+目标+”!”;
当(!完成){
guess\u input\u text=prompt(“我正在考虑下列颜色之一:\n\n”+
蓝色、青色、金色、灰色、绿色、洋红、橙色、红色、白色\n\n+
“我想的是什么颜色?”;
guess_input=guess_input_text.toLowerCase();
完成=检查猜测();
}
}
函数检查_guess(){
如果(猜测输入=“蓝色”){
返回false;
}
如果(猜测输入=“青色”){
返回false;
}
如果(猜测输入=“黄金”){
返回false;
}
如果(猜测输入=“灰色”){
返回false;
}
如果(猜测输入=“绿色”){
返回false;
}
如果(猜测输入=“橙色”){
返回false;
}
如果(猜测输入=“红色”){
返回false;
}
如果(猜测输入=“白色”){
返回false;
}
如果(猜测输入=目标){
返回true;
}

}
在Javascript中,应使用==(强制类型)或更可取的==(不强制类型)进行比较

因此,尝试仅替换以下条件的if条件:

if (guess_input === "blue") { ...

这不是比较。。。您实际上在这里给出了一个值:

guess_input = "white"
if语句应该是这样的:

if(guess_input == "white") {
    // your code here inside
}
试试这个:

var target = "magenta";
var guess_input;

function do_game() {
    //Prompts and makes the answer lowercase.
    guess_input = prompt("I am thinking of one of these colors:\n\n"+
                              "blue, cyan, gold, gray, green, magenta, orange, red, white\n\n"+
                              "What is the color I am thinking of?").toLowerCase();

    //Checks if the guess_input equals the target...
    if (guess_input == target) {
        alert("You are correct! The answer is " + target + "!");
    } else {//Not equals target...
        alert("You are incorrect! The correct answer is " + target + "!");
    }
}

do_game();

if语句包含赋值运算符。检查时,您正在分配变量:

if(guess_input = "blue") {
    //...
}
如果要比较字符串,应使用:

if(guess_input === "blue") {
    //...
}
使用三个等号可以确保它们是同一类型。如果只想比较值而不想比较类型,请使用以下两种方法:

if(guess_input == "blue") {
    //...
}
注意,当然有更简单的检查方法。最简单的是switch语句:

switch(guess_input){
    case "blue":
    case "cyan":
    case "gold":
    case "grey":
    //...
    case "white":
        return false;
    case target:
        return true;
}
但是,请注意,当字符串与其中任何字符串不匹配时(即输入“黄色”),这将不会返回值

我建议只测试用户输入是否正确。如果不是,则返回false

if(guess_input == target){
    return true;
return false;

=
是赋值,
=
是“等于”您可以将整个函数简化为
函数check\u guess(){return guess\u input===target;}
。或者去掉它,直接在循环中进行比较:
while(guess\u input!==target){…}
。您在这里所做的是在条件内为var
guess\u input
分配不同的值。谢谢大家……比较与分配错误是罪魁祸首是,但还有其他几个错误或效率低下的部分。关注不会使程序崩溃的错误。