重置并开始新的时间间隔

时间:2017-07-05 18:20:27

标签: javascript jquery

我很难在javascript中重置和启动时间间隔功能。以下是我迄今为止所做的工作:

$(document).ready(function(){
$("#start").click(function(){
var valu = $("#in").val()
setInterval(function()
{   
console.log("hello")
},1000*valu)
})

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="in">
<button id="start">Start</button>

问题:当我输入新值并按下开始时,旧间隔将继续工作,而不仅仅是新间隔。例如,如果您输入1并按启动,则控制台每1秒输出一次(良好)。但是,如果您输入10,而不是更改为10秒间隔,则保持旧的1秒间隔。 目标:当我输入一个新值时,我希望删除旧的区间函数并开始一个新的区间。

你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

&#13;
&#13;
$(document).ready(function(){
    $("#start").click(function(){
        var valu = $("#in").val();
        if(typeof myTimer != "undefined") {
            clearInterval(myTimer);
        }
 
        window.myTimer = setInterval(function()
        {   
            console.log("hello")
        },1000*valu);
    })

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="in">
<button id="start">Start</button>
&#13;
&#13;
&#13;

setInterval存储在一个全局变量中,下次调用该函数时可以再次访问该变量。

然后,检查变量是否已设置并使用clearInterval来停止计时器。然后再次使用setInterval启动新计时器。