我在Javascript中制作一个已经运作良好的计时器唯一的问题就是当我一直打到时 "开始"按钮它保持堆叠计数功能,并将以越来越高的速度计数。尝试过多种方法来阻止它,但无法管理自己。
JS:
var startknop = document.getElementById("start");
var stopknop = document.getElementById("stop");
var hour = 0;
var min = 0;
var sec = 0;
startknop.onclick = function()
{
intervalId = setInterval(count, 1000);
}
stopknop.onclick = function()
{
clearInterval(intervalId);
}
counter.innerHTML = hour + "0:" + min + "0:" + sec + "0";
function count() {
sec++;
if(sec <= 9)
{
var seco = "0" + sec;
}
else
{
seco = sec;
}
if(min <= 9)
{
var mino = "0" + min;
}
else
{
mino = sec;
}
if(hour <= 9)
{
var houro = "0" + hour;
}
else
{
houro = hour;
}
if(sec == 60){
sec = 0;
min += 1;
}
if(min == 60){
min = 0;
hour += 1;
}
counter.innerHTML = houro + ":" + mino + ":" + seco;
}
答案 0 :(得分:0)
使用布尔值将setInterval包装在if块中以检查是否已初始化。您正在启动多个计时器,因此stop仅停止分配给全局变量的最后一个计时器。您还可以将intervalId设置为-1,并检查它是否为&gt; 0,并在clearInterval调用后将其设置回-1。
答案 1 :(得分:0)
var running = false;
startknop.onclick = function()
{
if(!running)
{
running=true;
intervalId = setInterval(count, 1000);
}
}
当计时器结束时设置为运行false。