Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.10.2016, 12:31
Новичок на форуме
Отправить личное сообщение для Anhk Посмотреть профиль Найти все сообщения от Anhk
 
Регистрация: 25.10.2016
Сообщений: 6

Событие onclick и контект вызова
Есть след. код:
<body>   
	<button onclick='timer()'>Десятичный таймер секунд</button>
	<button onclick='timerBinary()'>Бинарный таймер секунд</button>

	<p id='paragraph' style='font-size:200px' align='center'></p>
    </body>
	
	<script>
	function timer(){
		var timer = setInterval(function(){
		var z = document.getElementById('paragraph');
		var date = new Date();
		z.innerHTML = date.getSeconds();}
		, 1000);
	}
	
	function timerBinary(){
		var timerBinary = setInterval(function(){
		var z = document.getElementById('paragraph');
		var date = new Date();
		z.innerHTML = (date.getSeconds()).toString(2);}
		, 1000);
	}
	
	</script>

При нажатии на некоторую кнопку, выполняется нужно событие и выводится таймер секунд в том или ином формате.
Окей, но хочу добавить код, чтобы было так: если один из таймеров уже включен, а я нажал на новый, то старый просто переставал работать. Т.е. нужно выполнить clearInterval.
Но как правильно указать контекст вызова этого метода? Читаю, но пока не понятно.
Ответить с цитированием
  #2 (permalink)  
Старый 30.10.2016, 15:19
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,680

Сохранять отдельно надо. Если таймер всегда должен быть в одном экземпляре, то проще всего сделать так:
function timer(){
  clearInterval(timer._interval);
  
  timer._interval = setInterval(function(){
    //код
  }, 1000);
}
или так
function timer(){
  if(timer._interval) return; //просто ничего не делаем, раз уже запущен
  
  timer._interval = setInterval(function(){
    //код
  }, 1000);
}
Т.к. функции в js - объекты, тут мы просто назначаем свойство с нужным значением.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поймать событие onclick() не обычным способом? mrmammoth Events/DOM/Window 6 29.04.2014 15:50
ДОбавить событие live к тегу onclick jonick Элементы интерфейса 6 24.09.2013 19:54
Поправьте событие onclick djonA Общие вопросы Javascript 1 24.03.2013 13:39
событие onclick chelsea Общие вопросы Javascript 1 17.09.2010 11:31
Событие onClick avtor01 Events/DOM/Window 3 03.09.2009 18:01