我正在建立测验,如果用户在回答为3的时间内未回答,则用户有5秒钟的时间回答该问题(这是没有回答的代码)。计时器会很好地更新,直到您从那时开始回答问题为止,计时器就会失控,看到5、3、4、0,然后转到下一个问题,答案为3。有人知道如何杀死旧计时器吗?
function tijd(aantalSec){
document.getElementById("sec").innerHTML = aantalSec;
if(aantalSec == 0){
clearTimeout(tijd);
antwoord(3);
}else{
aantalSec = aantalSec - 1;
var tijd = setTimeout('tijd(' + aantalSec + ',0)',1000);
}
}
最佳答案
它是一个范围问题。将tijid作为全局变量。同时将变量重命名为另一个名称,因为它与函数的名称混淆。
var intrID;
function tijd(aantalSec)
{
document.getElementById("sec").innerHTML = aantalSec;
if(aantalSec == 0)
{
clearTimeout(intrID);
antwoord(3);
}
else
{
aantalSec = aantalSec - 1;
intrID = setTimeout('tijd(' + aantalSec + ',0)',1000);
}
}
关于javascript - setTimeout没有停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2736532/