timer_gear
仅在我按某个按钮(直到5秒)的情况下才存在。但是可以随时调用另一个函数。在此功能中,我清除计时器并重新启动它。但首先我必须检查对象是否存在,否则我收到此错误:
未捕获的ReferenceError:未定义timer_gear
if(timer_gear!="undefined")clearTimeout(timer_gear);
if(timer_gear)clearTimeout(timer_gear);
EDIT1: 首先我拼错了我的问题:if(!timer => if(timer。) EDIT2:
完整的代码是:
function hide_gear(){
$('#gear_div').animate({opacity: 0}, 1000);
delete timer_gear; //EDIT3: destroy object
}
...
/*gear*/
$('#gear').click(function(){
$('#gear_div').animate({
opacity: 1,
}, 1000, function() {
timer_gear = setTimeout("hide_gear();",5000);
});
});
$('#gear').mousemove(function(){
if( ? ? ? )
{
clearTimeout(timer_gear);
timer_gear = setTimeout("hide_gear();",5000);
}
});
timer_gear// Uncaught ReferenceError timer_gear is not defined
timer_gear != undefined // Uncaught ReferenceError: timer_gear is not defined
typeof timer_gear !== "undefined" // WORKS
typeof timer_gear != "undefined" // WORKS, just tired it
var timer_gear; //at the begining - WORKS, but I did not wanted a new variable if its not necessary
谢谢你的回答!
答案 0 :(得分:51)
您需要做的就是声明timer_gear
。 clearTimeout
不是问题所在。引用MDN;将无效ID传递给clearTimeout
没有任何影响(并且不会抛出异常)。因此,只需将以下内容添加到代码顶部:
var timer_gear;
不需要其他人建议的所有if。
答案 1 :(得分:6)
如果您只想清除变量timer_gear
中保存的计时器(如果存在),您可以
if (timer_gear) clearTimeout(timer_gear);
答案 2 :(得分:5)
第一个应该是:
if(typeof timer_gear !== "undefined"){
clearTimeout(timer_gear);
}
第二个,但是如果未定义timer_gear
,则将无效,所以您应该使用上面的typeof
:
if(timer_gear){
clearTimeout(timer_gear);
}
答案 3 :(得分:0)
if
:
if (typeof(timer_gear) !== "undefined")
或简单地说:
if (timer_gear)
答案 4 :(得分:0)
通常应该有效:
timer_gear = false;
if(timer_gear != false){
clearTimeout(timer_gear);
}
答案 5 :(得分:0)
if(timer_gear)clearTimeout(timer_gear);
或
if(timer_gear != undefined)clearTimeout(timer_gear);