Javascript 如何使clearTimeout()在setTimeout()内发生?
我有一个setTimeout函数已经在运行,以使手表工作,但我想清除这个已经运行的函数的超时,当我在一个按钮上计时,但只有几秒钟后。理想情况下,我希望在另一个setTimeout()函数中有一个clearTimeout(),但我似乎无法让它工作 我目前有以下代码:Javascript 如何使clearTimeout()在setTimeout()内发生?,javascript,jquery,raphael,settimeout,Javascript,Jquery,Raphael,Settimeout,我有一个setTimeout函数已经在运行,以使手表工作,但我想清除这个已经运行的函数的超时,当我在一个按钮上计时,但只有几秒钟后。理想情况下,我希望在另一个setTimeout()函数中有一个clearTimeout(),但我似乎无法让它工作 我目前有以下代码: alarm.click(function() { water.animate(anim); setTimeout(function () { clearTimeout(time); }, 3000); });
alarm.click(function() {
water.animate(anim);
setTimeout(function () { clearTimeout(time); }, 3000);
});
var time = setTimeout(function(){ startTime() },1000);
但它确实会立即清除,而不是在3秒钟后。3秒钟后我该怎么做才能弄清楚?
编辑了我的代码,仍然不起作用:(.您正在直接调用它,但需要回调
setTimeout(function () { clearTimeout(time); }, 3000);
函数开始时间(){
document.getElementById('out').innerHTML+='starttime
';
}
函数集(){
document.getElementById('out').innerHTML+=“set
”;
setTimeout(函数(){
document.getElementById('out').innerHTML+=“clear3000
”;
clearTimeout(时间);
}, 3000);
}
变量时间=设置超时(函数(){
document.getElementById('out').innerHTML+=“clear1000
”;
开始时间();
}, 1000);
set();
您可以尝试:
var time = setTimeout(function(){startTime(time)},1000);
在startTime中,您可以清除时间
function startTime(time) {
cleartTimeout(time);
...
}
您正在调用该方法并立即分配它返回的内容。查看第二行setTimeout并将其与上面代码中的第一行进行比较。
setTimeout(cleartimout.bind(window,time),3000);
或将其包装在匿名函数中。您可以在那里使用引用的方法:var time=setTimeout(startTime,1000);