setTimeout: ¿devolución de llamada ejecutada inmediatamente? [duplicar
Esta pregunta ya tiene una respuesta aquí:
¿Por qué mi llamada de función que se debe programar mediante setTimeout se ejecuta de inmediato? [duplicar 3 respuestas Quiero dejar que un elemento se desvanezca y permanecer en la página durante 7 segundos antes de que se desvanezca. Y puedo cancelarlo en cualquier momento. Definí las siguientes funciones. Pero cuando llamé ainfo_timeout.setup(ele, 'some msg here')
, el ele se desvaneció y desapareció de inmediato.
¿Me estoy perdiendo de algo
var info_timeout = {
show_info: function(){
this.ele.html(this.msg).fadeIn('normal');
this.id = setTimeout(this.hide_info(), 7000);
},
hide_info: function(){
console.log(this.ele, this.id);
this.ele.fadeOut('slow');
delete this.id;
},
setup: function(ele, msg) {
this.ele = ele;
this.msg = msg;
this.cancel();
this.show_info();
},
cancel: function() {
if(typeof this.timeoutID == "number") {
clearTimeout(this.id);
delete this.id;
}
}
};
Gracias