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){…}
。您在这里所做的是在条件内为varguess\u input
分配不同的值。谢谢大家……比较与分配错误是罪魁祸首是,但还有其他几个错误或效率低下的部分。关注不会使程序崩溃的错误。