Остановка setInterval из прототипа [дубликат]

120
11 января 2021, 03:50
На этот вопрос уже даны ответы здесь:
Потеря контекста вызова (5 ответов)
Закрыт 1 год назад.

Есть конструкция в ходе которой у объекта есть переменная interval и через методы в прототипе этой переменной задаётся setInterval и при нажатии на кнопку этот setInterval должен тормозиться, но этого почему-то не происходит.

class Timer{ 
  constructor(date){ 
    this.interval; 
  } 
  startCount() { 
    this.interval = setInterval(()=> console.log('work'), 100); 
  } 
  stopCount() { 
    clearInterval(this.interval); 
  } 
} 
 
let timer = new Timer(); 
timer.startCount(); 
 
document.querySelector('button').onclick = timer.stopCount;
<button> stop </button>

Answer 1

Попробуйте так:

class Timer {  
   constructor(date){ 
    this.interval; 
  } 
  startCount() { 
    this.interval = setInterval(()=> console.log('work'), 300); 
  } 
  stopCount() { 
    clearInterval(this.interval); 
  } 
} 
 
var timer = new Timer(); 
 
document.querySelector('a').onclick = function(){ 
  timer.startCount(); 
} 
 
document.querySelector('button').onclick = function(){ 
  timer.stopCount(); 
}
<a href="#"> start </a> 
<button> stop </button>

READ ALSO
По сочетанию клавиш вставить текст из div

По сочетанию клавиш вставить текст из div

Если сделать, как написано в коде, то это работает ровно один раз (после того, как текст уже оказался в textarea и нужно, скажем, удалить пару символов,...

143
Плавно анимировать появление элемента

Плавно анимировать появление элемента

Вроде бы при подобном коде всё должно изменяться плавно, но подобного, к сожалению, не происходит

104
Сделать обновление кнопки

Сделать обновление кнопки

При нажатии на кнопку фильтр выводится окно сайдбара, где можно выбрать параметры фильтров, задать и отфильтроватьНо при закрытии окна (когда...

116
Блокирование кнопки в форме

Блокирование кнопки в форме

нужно сделать так, чтоб кнопка Save блокировалась, если UserName пустойНо не понимаю как это сделать)

114