嵌套的If-else语句被跳过

时间:2014-02-11 16:28:22

标签: javascript arrays if-statement nested

我正在构建的是计算机生成随机数(1-100)并且用户必须猜出正确数字的游戏。目标是让计算机将当前猜测与之前的猜测进行比较并吐出一个声明:“热”,“冷”,“更热”,“更冷”等。

我的代码(专注于JS):CodePen fiddle

//global variables--computer generated guess, and guess log 
var answer = Math.floor((Math.random() * 100)+1); 
var guessArray = []; 
var index = 0; 

//user clicks submit button and guess is registered by computer
$("#submit").click( function(){
    var guess = $("#guess").val(); 

    guessArray.push(guess);
    //prints out the answer and user guesses
    $("#answer").text("Answer:" + " "+ answer);
    $("#guessArrayPrint").text("You guessed: " + " " + guessArray + " ");

    if (answer === guess) {
        $("#statement").text("woo hoo right answer");
    } else {
        var currentDifference = Math.abs(answer-guess);
        var currentDiffArray = [];

        currentDiffArray.push(currentDifference); 

        if (index = 0)  {   
            //if-else statement comparing current guess range to answer
            if ( currentDifference >=1 && currentDifference <= 10){
                $("#statement").text("Ouch! You're hot!");
            } else {
                $("#statement").text("Brr! You're cold!");
            }
        } else { 
            //if-else statement comparing current guess to previous guess
            var previousDiff = answer- prevguess;
            var prevguess = guessArray [i-1];

            if( previousDiff < currentDifference){
                $("#statement").text("Ahh! Getting Warmer!");
            } else {
                $("#statement").text("Brrr...getting colder");
            }
        }
        index++
    }
});

我的嵌套if-else语句不起作用。当用户输入猜测时,无论答案多么接近,它总是返回语句“brr .. getting colder”,它位于“else”部分。

理想情况下,当用户输入他们的第一个猜测if (index = 0)应该运行然后输入第二个猜测时,它应该移动到带有先前猜测变量的“else”语句。我尝试移动变量,改变if / else的顺序,并认为这可能是index++的位置。什么都行不通。不确定我的变量,数组或if / else语句的语法是否有问题。

tl; dr :运行程序时,只运行嵌套else语句的“if-else”部分。不确定如何修复...我已经多次查看了我的代码。语法,数组和变量。不确定是什么问题。

1 个答案:

答案 0 :(得分:1)

你JS有if (index = 0)。这应该是if (index === 0)

此外,您需要将输入字段的值转换为数字。您可以使用以下方式执行此操作:

var guess = +$("#guess").val(); // + cast as a number

更多语法错误:

prevguess = guessArray[i - 1] --> prevguess = guessArray[index - 1];

这是部分工作Fiddle。我经历了一些场景,如果你给应用程序正确的答案,小提琴真正起作用。代码有很多语法错误,错误的引用和计算。我建议打开控制台或调试器,识别这些问题,并修复它们。

这是Fully Functional Demo