setTimeout - обратный вызов выполняется немедленно? [Дубликат]

На этот вопрос уже есть ответ здесь:

Почему мой вызов функции, который должен быть запланирован с помощью setTimeout, выполняется немедленно? [Дубликат] 3 ответа

Я хочу позволить элементу исчезнуть и остаться на странице в течение 7 секунд, прежде чем он исчезнет. И я могу отменить это в любое время. Я определил следующие функции. Но когда я позвонилinfo_timeout.setup(ele, 'some msg here')Эле просто исчез и сразу исчез.

Я что-то пропустил?

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

};

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос