Ошибка в объявлении массива JavaScript?

javascript

84 просмотра

3 ответа

Работа через вводный курс JS. Я делаю простую игру угадывания цвета. Я вставил несколько предупреждений в начале для устранения неполадок, но я не могу заставить эту программу добраться до предупреждения ("test1"); строка в моем playGame, которая загружается сразу через элемент body. Есть идеи, что я делаю не так? Я, кажется, объявляю это просто прекрасно ...

<!DOCTYPE html>
<html>
<body onload="playGame()">
<p>Welcome to my color guessing game</p>
<script language = "JavaScript">
function inArray(needle, haystack){
    for (var i = 0; i <haystack.length(); i++){
        if (needle === haystack[i]){
            return true;
        }
    }
    return false;
}
function changeBackground(color){
    document.body.style.background = color;
}
function playGame(){
    var correct = false; 
    alert("Correct status is: " + correct);
    var colorArray = ["cyan", "gold", "green", "gray", "magenta", "blue", "red", "orange", "yellow", "white"];
    alert("test1");
    for (var i = 0; i < colorArray.length(); i++){
        alert("for " + i + " the color is " + colorArray[i]);
    }
    colorArray = colorArray.sort();
    alert("answer index is " + answerIndex);
    alert("color array length is " + colorArray.length());
    var answerIndex = Math.floor(Math.random()*colorArray.length());
    alert("the resulting color from the color array is: " + answerColor);
    var answerColor = colorArray[answerIndex];
    alert("The correct color is " + answerColor);
    var answerList = colorArray.join(", ");
    var guessCount = 0;
    while(!correct){
        var colorGuess = prompt("Welcome to my guessing game! The colors available for your choosing are: " + "\n\n" + answerList + "\n\n" + "Which color am I thinking of?");
        guessCount++;
        if (!inArray(colorGuess, colorArray)){
            alert("Your guess wasn't one of the selections that was available or I otherwise don't recognize it." + "\n\n" + "Please try again!");
        }
        else{
            if (colorArray.indexOf(colorGuess)<color.indexOf(answerColor)){
                alert("Your guess was alphabetically before the correct color! Try again.");

            }
            else if (colorARray.indexOf(colorguess)>color.indexOf(answerColor)){
                alert("Your guess was alphabetically after the correct color! Try again.");
            }
            else{
                alert("Your guess is correct!");
                correct = true;
                changeBackground(answerColor);
            }
        }
    }
    alert("Great job!" + "\n\n" + "You took " + guessCount + " guesses to get the correct answer!");
}
</script>
</body>
</html>
Автор: ssilver Источник Размещён: 08.11.2019 11:00

Ответы (3)


0 плюса

В JS lengthесть свойство, которое возвращает количество элементов в массиве. Длина массива MDN .

В colorArray.length()заменить length()на length.

Автор: Nikhil Размещён: 20.08.2016 07:18

-1 плюса

Я только что проверил ваш код.

alert("answer index is " + answerIndex);
            alert("color array length is " + colorArray.length());
            var answerIndex = Math.floor(Math.random()*colorArray.length());
            alert("the resulting color from the color array is: " + answerColor);
            var answerColor = colorArray[answerIndex];
            alert("The correct color is " + answerColor);

Здесь вы пытаетесь предупредить переменную answerIndex, прежде чем объявить ее.

Автор: Milen Radkov Размещён: 20.08.2016 07:18

-1 плюса

Есть много глупых синтаксических ошибок javascript, исправлено все, и ниже приведен работающий код,

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
    </head>
    <body onload="playGame()">
        <p>Welcome to my color guessing game</p>
        <script type="text/javascript">
            function inArray(needle, haystack){
                for (var i = 0; i <haystack.length; i++){
                    if (needle === haystack[i]){
                        return true;
                    }
                }
                return false;
            }
            function changeBackground(color){
                document.body.style.background = color;
            }
            function playGame(){
                var correct = false; 
                alert("Correct status is: " + correct);
                var colorArray = ["cyan", "gold", "green", "gray",     
                    "magenta", "blue", "red", "orange", "yellow",      
                    "white"];
                alert("test1" + colorArray.length);
                for (var i = 0; i < colorArray.length; i++){
                    alert("for " + i + " the color is " + 
                        colorArray[i]);
                }
                colorArray = colorArray.sort();
                alert("answer index is " + answerIndex);
                alert("color array length is " + 
                    colorArray.length);
                var answerIndex = 
                    Math.floor(Math.random()*colorArray.length);
                alert("the resulting color from the color array 
                    is: " + answerColor);
                var answerColor = colorArray[answerIndex];
                alert("The correct color is " + answerColor);
                var answerList = colorArray.join(", ");
                var guessCount = 0;
                while(!correct){
                    var colorGuess = prompt("Welcome to my guessing 
                        game! The colors available for your choosing 
                        are: " + "\n\n" + answerList + "\n\n" + "Which 
                        color am I thinking of?");
                    guessCount++;
                    if (!inArray(colorGuess, colorArray)){
                        alert("Your guess wasn't one of the selections 
                        that was available or I otherwise don't 
                        recognize it." + "\n\n" + "Please try 
                        again!");
                    }
                    else{
                        if (colorArray.indexOf(colorGuess) 
                            <colorArray.indexOf(answerColor)){
                            alert("Your guess was alphabetically 
                                before the correct color! Try 
                                again.");
                    }
                    else if(colorArray.indexOf(colorGuess) >   
                        colorArray.indexOf(answerColor)){
                        alert("Your guess was alphabetically after the 
                            correct color! Try again.");
                    }
                    else{
                        alert("Your guess is correct!");
                        correct = true;
                        changeBackground(answerColor);
                    }
               }    
           }
           alert("Great job!" + "\n\n" + "You took " + guessCount + " 
           guesses to get the correct answer!");
       }
  </script>
  </body>
</html>
Автор: Dibakar Paul Размещён: 20.08.2016 08:22
Вопросы из категории :
32x32