Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.06.2019, 13:20
Аспирант
Отправить личное сообщение для oleg901 Посмотреть профиль Найти все сообщения от oleg901
 
Регистрация: 12.08.2018
Сообщений: 54

Очистка таймера
Добрый день, подскажите как организовать код таким образом что бы при нажатии на кнопку 'stop' таймер очищался.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<title>Документ без названия</title>
<style>
	  .box {
      position: absolute;
      width: 100px;
      height: 100px;
      background-color: blue;
    }
    .wrapper {
      position: relative;
      width: 400px;
      height: 400px;
      border: 3px solid red !important;
    }
    .btn-block {
    	padding: 10px;
    	background-color: grey;
    	margin-top: 10px;
    }
    button {
      margin-bottom: 10px;
      margin-top: 10px;
      width: 100px;
      height: 40px;
      background-color: yellow;
      border: none;
    }



</style>
</head>
<body>



    <button class="btn">Animate</button>
    <button class="btn">Stop</button>
        <div class="wrapper">
        <div class="box"></div>
    </div>

<script>

let box = document.querySelector('.box'),
			but = document.querySelectorAll('.btn');	

			function animate (e){
		let id,
				count = 0;

				function position(){
					if(count === 300){
						clearInterval(id)	
						box.style.top =  0 + 'px';
						box.style.left = 0 + 'px';
					} else{
						count++;
						box.style.top =  count + 'px';
						box.style.left = count + 'px';

					}
				}

				if(e.target.lastChild.data === 'Animate'){
					id = setInterval(position,10);


						

			 }  

		if(e.target.lastChild.data === 'Stop'){
			 				 	console.log('Stop')
			 		     	clearInterval(id);
					}
}

for(let i = 0; i < but.length; i++){

	but[i].addEventListener('click', animate);

}

	
</script>

</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 03.06.2019, 13:40
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

oleg901,
Поставьте
let id;
в самом начале скрипта и уберите в функции
Ответить с цитированием
  #3 (permalink)  
Старый 03.06.2019, 13:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

oleg901,
перенесите id(строка 53) в строку 49.
Ответить с цитированием
  #4 (permalink)  
Старый 03.06.2019, 14:55
Аспирант
Отправить личное сообщение для oleg901 Посмотреть профиль Найти все сообщения от oleg901
 
Регистрация: 12.08.2018
Сообщений: 54

Тьфу) Переменная заново создается при клике. Как это я не додумался спасибо)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно внести изменения в скрипт таймера обратного отсчета времени? LADYX Элементы интерфейса 2 26.07.2016 22:25
Как сделать замену кода по истечению таймера? yted2 Общие вопросы Javascript 5 26.04.2016 17:54
продолжить работу таймера с помощью cookie dima1989 Элементы интерфейса 1 03.09.2015 09:37
Не работает сброс таймера (setTimeout и clearInterval) stankhat Events/DOM/Window 3 05.02.2015 16:55
запретить повторный запуск таймера setInterval-clearInterval mrWong Общие вопросы Javascript 1 01.02.2010 12:25