I'm trying to animate letters in a string one after the other like how dominoes fall. The this keyword inside the handler function refers to window, how can I fix this?
class App {
constructor() {
this.mouseTarget = document.querySelector('#target');
this.letters = document.querySelectorAll('.letter');
this.handler = this.handler.bind(this);
this.mouseTarget.addEventListener('mouseenter', this.handler, false);
this.mouseTarget.addEventListener('mouseleave', this.handler, false);
}
handler(event) {
if (event.type === 'mouseenter') {
setTimeout(function() {
this.letters.forEach(function(letter) {
letter.classList.add('active');
});
}, 300);
}
else if (event.type === 'mouseleave') {
setTimeout(function() {
this.letters.forEach(function(letter) {
letter.classList.add('inactive');
});
}, 300);
}
}
}