gpt4 book ai didi

javascript - 程序卡在 clearInterval()

转载 作者:行者123 更新时间:2023-11-30 13:03:19 27 4
gpt4 key购买 nike

我意识到当我有一个清除计时器的选择器时很麻烦,但如果没有设置计时器,程序将卡在clearInterval()。看看这个 fiddle :http://jsfiddle.net/tw4A7/

按钮一是setInterval(),按钮二是clearInterval()。如果我先点击按钮二,它就会卡住,并且不会继续执行其余的功能。这只是一些场景的示例,其中我可能有一个条件或选择器来设置计时器,并且当满足另一个条件时,它必须退出计时器循环。

当然,如果我把 clearInterval() 放在函数的最后一部分就可以解决。然而,有时在做任何事情之前必须停止计时器。

有没有办法检查定时器是否已经启动?只有这样它才会变得清晰?否则,它将跳过 clearInterval() 并继续?

根据要求,hjpotter:

$('#1').click(function(){
$('#test').append("0");
loop=setInterval(function(){
$('#test').append("1");

}, 1000);
});

$('#2').click(function(){
window.clearInterval(loop);
$('#test').html("2");
});

最佳答案

这是因为循环未定义。

如果您查看浏览器控制台,您会发现有一个错误提示 Uncaught ReferenceError: loop is not defined。这是因为您正试图引用一个尚未定义的名为 loop 的变量。

当您首先按下 Button1 时,您定义了变量并使用间隔值启动它,这就是错误未抛出的原因。

由于您将 loop 用作共享全局变量,因此解决方案是在两种方法共享的范围内使用 var 语句定义变量。

var loop;
$('#1').click(function(){
$('#test').append("0");
loop=setInterval(function(){
$('#test').append("1");

}, 1000);
});
$('#2').click(function(){
window.clearInterval(loop);
$('#test').html("2");
});

演示:Fiddle

关于javascript - 程序卡在 clearInterval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16603164/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com