我想知道如何使用setInterval和clearInterval在javascript中停止计时器十秒后? 这是我的代码示例,请你告诉我哪里出错:
<!DOCTYPE html>
<html>
<head>
<script>
var tt=setInterval(function(){startTime()},1000);
function startTime()
{
var today = new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
// add a zero in front of numbers<10
m=checkTime(m);
s=checkTime(s);
today=checkTime(today);
document.getElementById('txt').innerHTML=s;
}
function checkTime(tt)
{
if (tt==10)
{
tt="0" + tt;
console.log(tt);
clearInterval(tt);
}
return tt;
}
</script>
</head>
<body onload="startTime()">
<div id="txt"></div>
</body>
</html>
答案 0 :(得分:11)
您可以在设置间隔后立即将超时设置为清除:
var tt = setInterval(function(){ startTime() }, 1000);
setTimeout(function() { clearInterval(tt); }, 10000);
答案 1 :(得分:5)
由于startTime()
将每秒运行一次,所以让计数器在其中增加到10,然后清除间隔。
var tt=setInterval(function(){startTime()},1000);
var counter = 1;
function startTime()
{
if(counter == 10) {
clearInterval(tt);
} else {
counter++;
}
document.getElementById('txt').innerHTML= counter;
}
答案 2 :(得分:4)
这适合我。
var tt = setInterval(function(){ startTime() }, 1000);
setTimeout(function() { clearInterval(tt); }, 10000);
答案 3 :(得分:3)
因为你命名了一个名为tt的局部变量,它不允许你访问全局变量tt。对变量名称的计划很糟糕。
你的代码也不会在10秒停止,它会在10秒或10分钟时停止。
function checkTime(xtt)
{
if (xtt==10)
{
xtt="0" + xtt;
console.log(xtt);
clearInterval(tt);
}
return xtt;
}
答案 4 :(得分:0)
您可以做到
setInterval(startTime, 1000).pipe(takeUntil(timer(10000)));