为了账号安全,请及时绑定邮箱和手机立即绑定

setInterval 不更新变量

setInterval 不更新变量

梵蒂冈之花 2023-10-04 15:19:37
当我运行代码时,它仅在我创建的初始变量“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 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

您应该将 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 处理程序并重新创建它。


查看完整回答
反对 回复 2023-10-04
?
慕的地10843

TA贡献1785条经验 获得超8个赞

间隔已经设置为 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);

}


查看完整回答
反对 回复 2023-10-04
  • 2 回答
  • 0 关注
  • 50 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信