2016-01-26 4 views
0

У меня проблема со сбросом setTimeout. Я пытался использовать clearTimeout():Сброс setTimeout

function formMsg(text){ 

    if (text == "success"){ 
     $(".alert-msg").removeClass("hidden alert-danger").addClass("alert-success"); 
     $(".alert-success .msg").html("<b>Well done!</b> You successfully added order."); 
    } else { 
     $(".alert-msg").removeClass("hidden alert-success").addClass("alert-danger"); 
     $(".alert-danger .msg").html("<b>F***!</b> Something went wrong."); 
    } 

    window.clearTimeout(timer); 

    var timer = window.setTimeout(function() 
       { 
        $(".alert-msg").fadeOut("slow", function() { 
         $(this).addClass('hidden').show(0); 
        }); 
       }, 2000); 

} 

, но без результата. Я ожидаю, что когда вы нажмете, таймер снова замеряет две секунды.

+0

Так что вопрос вы сталкиваетесь? –

+0

'timer' - локальная переменная внутри области вашей функции. Таким образом, при следующем щелчке, идентификатор интервала, создаваемый при первом щелчке, не будет доступен. Вам нужно переместить переменную во внешнюю область, к которой имеют доступ оба «экземпляра» функции обработчика. – CBroe

ответ

2

Это потому, что вы инициализируете переменную как локальную (внутри вашей функции). Это будет делать трюк:

window.clearTimeout(formMsg.timer); 
formMsg.timer = window.setTimeout(....) 
0

движение таймер, из контекста функции, как так:

var timer = null; //initialize  

function formMsg(text){ 

     if (text == "success"){ 
      $(".alert-msg").removeClass("hidden alert-danger").addClass("alert-success"); 
      $(".alert-success .msg").html("<b>Well done!</b> You successfully added order."); 
     } else { 
      $(".alert-msg").removeClass("hidden alert-success").addClass("alert-danger"); 
      $(".alert-danger .msg").html("<b>F***!</b> Something went wrong."); 
     } 

     if(timer !== null) 
     window.clearTimeout(timer); 

     var timer = window.setTimeout(function() 
        { 
         $(".alert-msg").fadeOut("slow", function() { 
          $(this).addClass('hidden').show(0); 
         }); 
        }, 2000); 

    } 

 Смежные вопросы

  • Нет связанных вопросов^_^