JavaScript设置间隔未停止
我正在使用setInterval()运行JavaScript计时器。我想运行计时器5秒,然后从零秒开始重新启动计时器,同样的过程应该运行3次JavaScript设置间隔未停止,javascript,jquery,setinterval,clearinterval,Javascript,Jquery,Setinterval,Clearinterval,我正在使用setInterval()运行JavaScript计时器。我想运行计时器5秒,然后从零秒开始重新启动计时器,同样的过程应该运行3次 <!DOCTYPE html> <html> <head> <title>Jquery setinterval stop after sometime</title> </head> <body> <p>Counter: <span id
<!DOCTYPE html>
<html>
<head>
<title>Jquery setinterval stop after sometime</title>
</head>
<body>
<p>Counter: <span id="counter"></span></p>
<p>Seconds: <span id="seconds"></span></p>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var start_secs;
var counter = 0;
function intervalFunc(){
var seconds = 0;
$('#counter').html(counter);
start_secs = setInterval(function(){
$('#seconds').html(seconds);
if(seconds===5){
if(counter < 3){
intervalFunc();
}else{
console.log('else');
clearInterval(start_secs);
seconds=0;
return false;
}
}
seconds++;
}, 1000);
counter++;
}
intervalFunc();
});
</script>
</body>
Jquery setinterval在某个时间后停止
柜台:
秒数:
$(文档).ready(函数(){
var启动秒;
var计数器=0;
函数intervalFunc(){
var秒=0;
$('#counter').html(counter);
start_secs=setInterval(函数(){
$('#seconds').html(秒);
如果(秒===5){
如果(计数器<3){
intervalFunc();
}否则{
console.log('else');
清除间隔(开始秒);
秒=0;
返回false;
}
}
秒++;
}, 1000);
计数器++;
}
intervalFunc();
});
在计数器值小于3之前,上述代码计时器工作正常,但在此之后,setInterval()继续运行,甚至在使用clearInterval()时也不会停止
是否有人能指出给定代码中的问题,即为什么setInterval()
在计数器值大于或等于3之后没有停止?在调用intervalFunc()
之前,必须清除上一个计时器。因为每个计时器都分配给同一个变量,所以计时器在后台运行,因此无法清除这些计时器
检查代码中的更改:
<!DOCTYPE html>
<html>
<head>
<title>Jquery setinterval stop after sometime</title>
</head>
<body>
<p>Counter: <span id="counter"></span></p>
<p>Seconds: <span id="seconds"></span></p>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var start_secs;
var counter = 0;
function intervalFunc(){
var seconds = 0;
$('#counter').html(counter);
start_secs = setInterval(function(){
$('#seconds').html(seconds);
if(seconds===5){
clearInterval(start_secs);
if(counter < 3){
intervalFunc();
}else{
console.log('else');
seconds=0;
return false;
}
}
seconds++;
}, 1000);
counter++;
}
intervalFunc();
});
</script>
</body>
Jquery setinterval在某个时间后停止
柜台:
秒数:
$(文档).ready(函数(){
var启动秒;
var计数器=0;
函数intervalFunc(){
var秒=0;
$('#counter').html(counter);
start_secs=setInterval(函数(){
$('#seconds').html(秒);
如果(秒===5){
清除间隔(开始秒);
如果(计数器<3){
intervalFunc();
}否则{
console.log('else');
秒=0;
返回false;
}
}
秒++;
}, 1000);
计数器++;
}
intervalFunc();
});
在调用intervalFunc()
之前,必须清除上一个计时器。因为每个计时器都分配给同一个变量,所以计时器在后台运行,因此无法清除这些计时器
检查代码中的更改:
<!DOCTYPE html>
<html>
<head>
<title>Jquery setinterval stop after sometime</title>
</head>
<body>
<p>Counter: <span id="counter"></span></p>
<p>Seconds: <span id="seconds"></span></p>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var start_secs;
var counter = 0;
function intervalFunc(){
var seconds = 0;
$('#counter').html(counter);
start_secs = setInterval(function(){
$('#seconds').html(seconds);
if(seconds===5){
clearInterval(start_secs);
if(counter < 3){
intervalFunc();
}else{
console.log('else');
seconds=0;
return false;
}
}
seconds++;
}, 1000);
counter++;
}
intervalFunc();
});
</script>
</body>
Jquery setinterval在某个时间后停止
柜台:
秒数:
$(文档).ready(函数(){
var启动秒;
var计数器=0;
函数intervalFunc(){
var秒=0;
$('#counter').html(counter);
start_secs=setInterval(函数(){
$('#seconds').html(秒);
如果(秒===5){
清除间隔(开始秒);
如果(计数器<3){
intervalFunc();
}否则{
console.log('else');
秒=0;
返回false;
}
}
秒++;
}, 1000);
计数器++;
}
intervalFunc();
});
有几个问题。主要的一点是,start\u seconds
需要是函数的本地值,而不是在函数外部声明-您希望在函数内独立控制每个间隔。按照你的方式,你失去了对早期人的参考。当秒==5时,无论计数器是否<3
都要清除间隔,因为您正在启动一个新的计数器
大概是这样的:
var计数器=0;
函数intervalFunc(){
var秒=0
var start_secs=setInterval(函数(){
console.log(秒)
如果(秒===5){
如果(计数器<3){
intervalFunc();
}
//5次后,清除间隔
//如果计数器<3,则启动新的计数器
清除间隔(开始秒);
返回
}
秒++;
}, 500);
计数器++;
}
intervalFunc()代码>有几个问题。主要的一点是,start\u seconds
需要是函数的本地值,而不是在函数外部声明-您希望在函数内独立控制每个间隔。按照你的方式,你失去了对早期人的参考。当秒==5时,无论计数器是否<3
都要清除间隔,因为您正在启动一个新的计数器
大概是这样的:
var计数器=0;
函数intervalFunc(){
var秒=0
var start_secs=setInterval(函数(){
console.log(秒)
如果(秒===5){
如果(计数器<3){
intervalFunc();
}
//5次后,清除间隔
//如果计数器<3,则启动新的计数器
清除间隔(开始秒);
返回
}
秒++;
}, 500);
计数器++;
}
intervalFunc()
您只需要调用一次setInterval
,因为它会