В то время как l oop в JS замедляет браузер - PullRequest
1 голос
/ 22 марта 2020

Я пишу код, который должен угадать число, введенное пользователем, и вернуть абзац со строкой и количеством попыток, необходимых сценарию для получения номера. Ничего особенного. Проблема в том, что как только я запускаю страницу на firefox, она в основном падает, и я не знаю почему.

Спасибо за помощь.

Это мой код:

    <input id="guess" placeholder="Your Number">
    <button id="guessButton">Guess it!</button>
    <br>
    <div id="scriptOutput"></div>

    <script>
        var myNumber = document.getElementById("guess").value
        var guess = false
        var scriptGuess = Math.random()
        scriptGuess = scriptGuess*6
        scriptGuess = Math.floor(scriptGuess)
        var guessCount = 1


        document.getElementById("guessButton").onclick = function() {

            while (guess == false) {

                if (myNumber == scriptGuess) {
                    document.getElementById("scriptOutput").innerHTML = "<p>" + "I got it after" + guessCount + "times!" + "</p>";
                    guess = true;

                }else {
                    guessCount ++;

                }
            }
        }

    </script>

</body>

1 Ответ

1 голос
/ 22 марта 2020

Вы определяете scriptGuess до того, как l oop, таким образом, каждый раз, когда работает l oop, scriptGuess не меняется. Это создает бесконечное число l oop.

. Попробуйте добавить логику догадок c в то время как l oop. Таким образом, новое значение scriptGuess инициализируется каждый раз, когда l oop:

<body>
    <input id="guess" placeholder="Your Number">
    <button id="guessButton">Guess it!</button>
    <br>
    <div id="scriptOutput"></div>

    <script>
        var myNumber = document.getElementById("guess").value
        var guess = false
        var guessCount = 1


        document.getElementById("guessButton").onclick = function () {

            while (guess == false) {
                var scriptGuess = Math.random()
                scriptGuess = scriptGuess * 6
                scriptGuess = Math.floor(scriptGuess)

                if (myNumber == scriptGuess) {
                    document.getElementById("scriptOutput").innerHTML = "<p>" + "I got it after" + guessCount + "times!" + "</p>";
                    guess = true;

                } else {
                    guessCount++;

                }
            }
        }

    </script>

</body>

Однако я все же думаю, что вы столкнетесь с проблемами, связанными со сложностью времени. Это займет много времени, чтобы угадать введенное пользователем число, особенно без заранее определенного диапазона.

...