2012-05-21 3 views
2

У меня есть кнопка, которая запускает функцию внутри заданного интервала каждые 1 сек. Значение кнопки изменяется на остановку. Когда я нажимаю стоп, я вызываю метод clearinterval. По какой-то причине метод clear interval не работает.setinterval метод не работает

Это мой вход

<input id="trigger" type="button" value="start"/> 

мой JS функция

$(function() { 
    $('#trigger').click(function() { 
     var timerId = 0; 
     var trigger = $('#trigger').val(); 

     if(trigger == 'start') { 
      timerId = setInterval(function() { 
       $('#trigger').val('stop'); 
       main(); 
      }, 1000); 
     } else if(trigger == 'stop') { 
       clearInterval(timerId); 
       $('#trigger').val('start');     
     } 
    }); 
}); 

ответ

4

Вы timerId определяется локальными для сферы клик(), так что при запуске его во второй раз (в событии остановки) снова будет 0. Попробуйте это

var timerId = 0; 
$(function() { 
    $('#trigger').click(function() { 
     var trigger = $('#trigger').val(); 

     if(trigger == 'start') { 
      timerId = setInterval(function() { 
       $('#trigger').val('stop'); 
       main(); 
      }, 1000); 
     } else if(trigger == 'stop') { 
       clearInterval(timerId); 
       $('#trigger').val('start');     
     } 
    }); 
}); 
+0

приветствуется :) – JustDanyul

3

Вы повторно инициализируете таймер каждый раз, когда нажимается #trigger. Переместите var timerId = 0; вне функции щелчка

+0

oh ya спасибо, посмотрел, что :) .... большое спасибо –

+0

@YeshwanthVenkatesh Нет проблем, это легко сделать! Вы должны принять один из полученных вами ответов, поскольку у вас все еще возникают вопросы о других частях кода :) – FluffyKitten

+0

@FluffyKitten Почему нужно принимать? .. это было просто «не замечай»;) шутка –

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