Показать сообщение отдельно
  #1 (permalink)  
Старый 18.02.2017, 20:03
Новичок на форуме
Отправить личное сообщение для Hur_ley Посмотреть профиль Найти все сообщения от Hur_ley
 
Регистрация: 24.07.2016
Сообщений: 8

Не работает clearInterval
Делаю таймер, который издает звуоковой сигнал каждые n секунд.
Функция okras отрисовывает полоску в зависимости от времени, которое проходит, до звукового сигнала.
Вызываю ее один раз перед timerPing = setInterval для отрисовки до первого сигнала, остальные разы вызываю уже внутри setInterval. По кнопке вызываю функцию остановки таймера timerStop(). Если запустить таймер, потом нажать на кнопку перед первым звуковым сигналом, то таймер выключится, и отрисовка полосы так же остановится. Если нажать на кнопку, после первого сигнала, то есть, когда функция отрисовки будет выполняться внутри setInterval, то выключится только таймер, а полоса все равно продолжает рисоваться, почему так?

...

function timerfunc(){

	...
	
	function okras(){
		timerLine = setInterval(function() 
		{
			var timePassed = Date.now() - start;
			if (timePassed >= finalTime*1000) 
			{
				clearInterval(timerLine);
			}
			draw(timePassed);
		}, 20);
	}

	...
	
	okras();
	timerPing = setInterval(function() 
	{  
		start = Date.now();
	okras();
		ping.play();  
	}, finalTime*1000);
	
}

function timerStop(){
	clearInterval(timerPing);
	clearInterval(timerLine);
	document.getElementById('buttonStop').innerHTML='<a id=timerButton onClick=timerfunc()>ЗАПУСК</a>';
}
Ответить с цитированием