ClearTimeout, если существует
timer_gear
существуют только в том случае, если я нажимаю какую-либо кнопку (до 5 секунд). Но есть еще одна функция, которую можно вызвать в любое время. В этой функции я очищаю таймер и перезапускаю его. Но сначала я должен проверить, существует ли объект, иначе я получаю эту ошибку:
Uncaught 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
Благодарим вас за ответы!
Ответы
Ответ 1
Первый должен быть:
if(typeof timer_gear !== "undefined"){
clearTimeout(timer_gear);
}
И второй, но это не сработает, если timer_gear
не определено, , поэтому вы должны использовать typeof
выше:
if(timer_gear){
clearTimeout(timer_gear);
}
Ответ 2
Все, что вам нужно сделать, это объявить timer_gear
. clearTimout
здесь не проблема. Процитировать MDN; Передача недопустимого идентификатора на clearTimeout
не имеет никакого эффекта (и не вызывает исключения). Поэтому просто добавьте следующее в начало своего кода:
var timer_gear;
Не нужно, чтобы все, если все остальные предлагали.
Ответ 3
Если вы хотите очистить таймер, удерживаемый в переменной timer_gear
, если он существует, вы можете сделать
if (timer_gear) clearTimeout(timer_gear);
Ответ 4
Вам нужно другое условие для вашего if
:
if (typeof(timer_gear) !== "undefined")
или просто:
if (timer_gear)
Ответ 5
Обычно это должно работать:
timer_gear = false;
if(timer_gear != false){
clearTimeout(timer_gear);
}
Ответ 6
if(timer_gear)clearTimeout(timer_gear);
или
if(timer_gear != undefined)clearTimeout(timer_gear);