Javascript 嵌套设置超时运行一次

Javascript 嵌套设置超时运行一次,javascript,jquery,Javascript,Jquery,我正试图用JS做一个“烤面包机”通知系统,但它没有按预期运行 每当有与用户相关的nodeJS或AJAX更新时,我想显示一个通知框,如果同时有多个通知,该通知框可能会嵌套,有点像facebook,并在5秒钟后被删除,与当前运行的其他通知无关 然而,只有最后一个通知将消失并被删除,其余的旧通知将保持可见。。。。我找不到这是什么原因 这是我的代码,在Mieliki对象中 var mielikki = { notifHooks: [], toaster : { notif

我正试图用JS做一个“烤面包机”通知系统,但它没有按预期运行

每当有与用户相关的nodeJS或AJAX更新时,我想显示一个通知框,如果同时有多个通知,该通知框可能会嵌套,有点像facebook,并在5秒钟后被删除,与当前运行的其他通知无关

然而,只有最后一个通知将消失并被删除,其余的旧通知将保持可见。。。。我找不到这是什么原因

这是我的代码,在Mieliki对象中

    var mielikki = {
    notifHooks: [],
    toaster : {
    notifCount : 0,
    launch : function(ops) {
        message = '';
        delay = 5000;
        msgType = 'generic';
        if("message" in ops) {
            message = ops.message;
        }
        if("delay" in ops) {
            delay = ops.delay;
        }
        if("msgType" in ops) {
            msgType = ops.msgType;
        }
        this.notifCount += 1;
        $('#toaster_template').clone().attr('id','notification-'+this.notifCount).html(message).appendTo('#notifications');
        var target = $("#notification-"+this.notifCount);
        var test = setTimeout(function() {  target.fadeOut("slow",function() { target.remove(); })},5000);
        mielikki.notifHooks.push( test );
    }
}
}
div toaster_模板是基本div,用于为每个新通知保留克隆

从任何来源或控制台执行以下操作:

 mielikki.toaster.launch({'message' : 'test'});

但同样,如果前一个通知同时运行2次以上,则只有最后一个/最新的通知会按预期运行。

我看不出有什么问题,可能是在其他地方使用notifHooks数组取消了超时,我认为这是一个范围问题,但无法使用您发布的函数将两个超时与共享元素一起排队,这不是问题的答案,但我做此测试只是为了确认您所做的没有任何错误:

函数通知消息{ var通知=$.htmlmessage; $document.body.appendnotification; setTimeoutfunction{ notification.fadeOut500,函数{notification.remove}; }, 1000; } 通知‘你好’; 通知“世界”; setTimeoutfunction{ 通知"1000ms";; }, 1000; setTimeoutfunction{ 通知“1500ms”; }, 1500;
你看过约翰爸爸的图书馆了吗?它非常简单,效果非常好。从未听说过现在就尝试和测试它,到目前为止还不错,谢谢!这正是我想要的然而,为什么我的代码不工作真让我头疼。事实上,我也用多种方法测试了它,但它就是不工作:没有理由解释为什么它不工作。