setInterval не обновляется с помощью переменной - PullRequest
1 голос
/ 24 марта 2020

Когда я запускаю код, это только интервалы в исходной переменной, которую я создал "2000". Когда я нажимаю на кнопку, интервал не меняется на «50». Кто-нибудь знает почему?

<html>
    <body>
        <h1 id="pressme"> Press me! </h1>
    </body>

    <script>
    amount = 2000;
    var i = 1;
    document.getElementById("pressme").onclick = function() {
        amount = 50;
    }
        function doSomething() {
            i++;
            console.log("I did something! " + i);
        }
        setInterval(doSomething, amount)
    </script>
</html>

Это не код OG, а упрощенная версия.

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вы должны использовать setInterval вместе с clearInterval вместе.

<html>
    <body>
        <h1 id="pressme"> Press me! </h1>
    </body>

    <script>
        amount = 2000;
        var i = 1;
        var handler
        document.getElementById("pressme").onclick = function() {
            amount = 50;
            clearInterval(handler);
            handler = setInterval(doSomething, amount);
        }
        function doSomething() {
            i++;
            console.log("I did something! " + i);
        }
        handler = setInterval(doSomething, amount);
    </script>

Поэтому, когда вы нажимаете кнопку, вы должны удалить оригинальный обработчик setInterval и воссоздать его.

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

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

Я рекомендую вам сделать это:

let amount = 2000;
let interval = setInterval(doSomething, amount);

var i = 1;
document.getElementById("pressme").onclick = function () {
    clearInterval(interval);
    amount = 50;
    setInterval(doSomething, amount);
}
function doSomething() {
    i++;
    console.log("I did something! " + i);
}
...