Javascript 如何使clearTimeout()在setTimeout()内发生?

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); });

我有一个setTimeout函数已经在运行,以使手表工作,但我想清除这个已经运行的函数的超时,当我在一个按钮上计时,但只有几秒钟后。理想情况下,我希望在另一个setTimeout()函数中有一个clearTimeout(),但我似乎无法让它工作

我目前有以下代码:

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);