在JavaScript中停止setInterval调用
我正在使用在JavaScript中停止setInterval调用,javascript,dom-events,setinterval,Javascript,Dom Events,Setinterval,我正在使用setInterval(fname,10000)在JavaScript中每10秒调用一个函数。有可能在某些事件中停止呼叫它吗 我希望用户能够停止重复刷新数据。setInterval()返回一个间隔ID,您可以将其传递到clearInterval(): 请参阅和的文档。如果将setInterval的返回值设置为变量,则可以使用clearInterval停止它 var myTimer = setInterval(...); clearInterval(myTimer); 您可以设置一个新
setInterval(fname,10000)
在JavaScript中每10秒调用一个函数。有可能在某些事件中停止呼叫它吗
我希望用户能够停止重复刷新数据。setInterval()
返回一个间隔ID,您可以将其传递到clearInterval()
:
请参阅和的文档。如果将
setInterval
的返回值设置为变量,则可以使用clearInterval
停止它
var myTimer = setInterval(...);
clearInterval(myTimer);
您可以设置一个新变量,并让它在每次运行时递增++(累计一个),然后我使用条件语句结束它:
var intervalId = null;
var varCounter = 0;
var varName = function(){
if(varCounter <= 10) {
varCounter++;
/* your code goes here */
} else {
clearInterval(intervalId);
}
};
$(document).ready(function(){
intervalId = setInterval(varName, 10000);
});
var intervalId=null;
var-varCounter=0;
var varName=function(){
if(varCounter以上答案已经解释了setInterval如何返回句柄,以及如何使用该句柄取消间隔计时器
一些架构方面的考虑:
请不要使用“无作用域”变量。最安全的方法是使用DOM对象的属性。最简单的地方是“文档”。如果刷新程序是通过启动/停止按钮启动的,则可以使用按钮本身:
<a onclick="start(this);">Start</a>
<script>
function start(d){
if (d.interval){
clearInterval(d.interval);
d.innerHTML='Start';
} else {
d.interval=setInterval(function(){
//refresh here
},10000);
d.innerHTML='Stop';
}
}
</script>
开始
功能启动(d){
如果(d.间隔){
间隔时间(d.interval);
d、 innerHTML='Start';
}否则{
d、 间隔=设置间隔(函数(){
//刷新这里
},10000);
d、 innerHTML='Stop';
}
}
由于该函数是在按钮单击处理程序中定义的,因此无需再次定义。如果再次单击按钮,计时器可以恢复。为什么不使用更简单的方法?添加一个类!
只需添加一个类,告诉间隔不要做任何事情。例如:on hover
var i=0;
this.setInterval(函数(){
if(!$('#counter').hasClass('pauseInterval')){//仅在没有此类'pauseInterval'时运行
console.log('Counting…');
$('#counter').html(i++);//仅用于解释和显示
}否则{
console.log(“停止计数”);
}
}, 500);
/*在这个例子中,我在mouseover上添加了一个类,然后在mouseleave上再次删除它*/
$('#计数器')。悬停(函数(){//鼠标输入
$(this.addClass('pauseInterval');
},函数(){//鼠标左键
$(this.removeClass('pauseInterval');
}
);
/*其他例子*/
$(“#暂停区间”)。单击(函数(){
$(“#计数器”).toggleClass('pauseInterval');
});
正文{
背景色:#eee;
字体系列:Calibri、Arial、无衬线字体;
}
#柜台{
宽度:50%;
背景:ddd;
边框:2个实心#009afd;
边界半径:5px;
填充物:5px;
文本对齐:居中;
过渡:.3s;
保证金:0自动;
}
#计数器暂停间隔{
边框颜色:红色;
}
暂停
@cnu
当您在查看控制台浏览器(F12)之前尝试运行代码时,您可以停止间隔。try comment clearInterval(触发器)是否再次查看控制台,而不是美化器?:p
检查示例a源:
var trigger=setInterval(函数(){
if(document.getElementById('sandroalvares')!=null){
文件。书写(“SandroAlvares”);
清除间隔(触发器);
console.log('Success');
}否则{
log('Trigger!!');
}
},1000);
Author
已回答…但如果您需要一个功能齐全、可重复使用的计时器,该计时器还支持不同时间间隔的多个任务,您可以使用my(用于节点和浏览器)
//基本间隔分辨率为1000ms(1秒)的计时器。
常量计时器=新任务计时器(1000);
//根据勾选间隔添加任务。
timer.add({
id:'job1',//任务的唯一id
滴答声间隔:5,//每5滴答声运行一次(5 x间隔=5000毫秒)
totalRuns:10,//仅运行10次。(无限次省略)
回调(任务){
//每次运行时要执行的代码
log(task.name+'任务已运行'+task.currentRuns+'次');
//随时停止计时
if(someCondition())timer.stop();
//或者,如果还有其他任务,只需删除此任务
if(someCondition())timer.remove(task.id);
}
});
//启动计时器
timer.start();
在您的情况下,当用户单击以干扰数据刷新时,如果需要重新启用,还可以调用timer.pause()
,然后调用timer.resume()
请参阅。声明变量以分配从setInterval(…)返回的值
并将指定的变量传递给clearInterval()
e、 g
//您可以访问上述调用clearInterval声明的计时器的任何位置
$('.htmlelement').click( function(){ // any event you want
clearInterval(timer);// Stops or does the work
});
clearInterval()方法可用于通过setInterval()方法清除计时器集
setInterval始终返回一个ID值。可以在clearInterval()中传递该值以停止计时器。
下面是一个从30开始计时并在变为0时停止的示例
let time = 30;
const timeValue = setInterval((interval) => {
time = this.time - 1;
if (time <= 0) {
clearInterval(timeValue);
}
}, 1000);
let time=30;
常量时间值=设置间隔((间隔)=>{
time=this.time-1;
if(time这是我如何使用clearInterval()方法在10秒后停止计时器的
函数startCountDown(){
var countdownnumberl=document.getElementById('countdown-number');
var倒计时=10;
常量间隔=设置间隔(()=>{
倒计时=--倒计时使用setTimeOut在一段时间后停止间隔
var interVal = setInterval(function(){console.log("Running") }, 1000);
setTimeout(function (argument) {
clearInterval(interVal);
},10000);
我想下面的代码会有所帮助:
var refreshIntervalId = setInterval(fname, 10000);
clearInterval(refreshIntervalId);
您的代码100%正确…那么…有什么问题吗?或者是教程…试试看
let refresch=()=>document.body.style='background:#'
+Math.random().toString(16.slice(-6);
设intId=设置间隔(refresch,1000);
让停止=()=>clearInterval(intId);
body{transition:1s}
Stop
在nodeJS中,您可以在setInterval函数中使用“this”特殊关键字
您可以使用thisthis关键字来清除间隔,下面是一个示例:
setInterval(
function clear() {
clearInterval(this)
return clear;
}()
, 1000)
当您打印
var refreshIntervalId = setInterval(fname, 10000);
clearInterval(refreshIntervalId);
setInterval(
function clear() {
clearInterval(this)
return clear;
}()
, 1000)
<div id='count'>100</div>
<button id='start' onclick='start()'>Start</button>
<button id='stop' onclick='stop()'>Stop</button>