Проблема увеличения JavaScript - PullRequest
0 голосов
/ 08 марта 2012

Я написал функцию, которая должна (1) генерировать случайное число, (2) оценивать пользователя по этому числу и (3) отслеживать попытки пользователя.

Первые две цели выполнены, но у меня возникли проблемы с (3), отслеживанием попыток пользователя.

function randNum(){
        var num = Math.floor(Math.random()*(100)+1); 
        var usrGuess = document.forms.guess.visitor.value;
        var attempt = 0;

        if (usrGuess != num){
            if ((usrGuess < 1) || (usrGuess > 100))
                document.getElementById("wizard").innerHTML = "Fool! This number isn't even part of the set!";
            else if (usrGuess > num)
                document.getElementById("wizard").innerHTML = "Wrong, fool! This is greater than my number! I was thinking of " + num + "!";
            else if (usrGuess < num)
                document.getElementById("wizard").innerHTML = "Wrong, fool! This is less than my number! I was thinking of " + num + "!";

            attempt += 1; // Here's the change.
            alert(attempt); // Here's the output. It doesn't change.
        }
        else if (usrGuess == num){
            if (attempt <= 5)
                document.getElementById("wizard").innerHTML = "Right... fool. You only guessed in " + attempt + " tries.";
            else if ((attempt <= 10) && (attempt > 5))
                document.getElementById("wizard").innerHTML = "Right, fool. You only after " + attempt + " tries.";
            else if (attempt > 10 )
                document.getElementById("wizard").innerHTML = "Haha, fool! You finally guessed after " + attempt + " tries.<br />Go wallow in your lost time.";
        }
    }

По какой-то причине, даже если я помещаю «попытку» в качестве внешнего параметра, число отслеживает только одну попытку.

У кого-нибудь есть решение?

Ответы [ 2 ]

4 голосов
/ 08 марта 2012

Вы объявляете «попытку» как локальную переменную.Он будет переинициализироваться каждый раз, когда вы вызываете функцию.

При каждом вызове функции вы также создаете новое случайное число, которое кажется немного значимым:* Объявите переменные вне функции и посмотрите, как это происходит.(Тем не менее, оставьте внутри "usrGuess"; просто переместите "num" и "пытаемся".)

0 голосов
/ 08 марта 2012

У вас есть var attempt = 0 в функции.Каждый раз, когда вы вызываете эту функцию, она устанавливает attempt в 0. Объявите attempt вне функции и посмотрите, как это работает для вас.

Кроме того, я предпочитаю следующие обозначения для приращения: attempt++;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...