Salut ami(e)s développeurs, Je suis actuellement en plein développement d'une classe en JavaScript permettant de créer un slider depuis un template HTML.
let args = {
parentElt: 'slider',
height: '20rem',
width: '60%',
slideSpeed: '0.5s',
prevText: '<img src="images/next.png" style="transform: rotate(180deg);">',
nextText: '<img src="images/next.png">',
}; let mySlider = new Slider2(args);
cette classe ajoute automatiquement le style des conteneurs et des différentes slides, ainsi que la navigation du slider. Pour l'animation, j'ai crée une méthode qui retourne la position de la div qui contient les sliders et une autre censé modifier la position de cette div en fonction de sa position initiale.
/* Methode qui retourne le position */
get position() {
return this.slidesPos();
}
slidesPos() {
return parseInt(window.getComputedStyle(this.slides).left);
}
/* Methode de l'animation */
animateSlides(dir) {
this.position;
if(dir === 'right'){
this.slides.style.left = (this.position - 100) + '%';
} else {
this.slides.style.left = (this.position + 100) + '%';
}
}
Voici mon probleme :
lorsque j'ajoute l'écoute de l'événement click sur l'un des boutons avec la méthode d'animation en callback l'événement n'est pas pris en compte (la slide change automatiquement)
/* this.next est le bouton "suivant" */
this.next.addEventListener('click', this.animateSlides('right'));
et lorsque j'ajoute cette methode d'animation dans une fonction anonyme
Si j'ai bien compris c'était à cause de la syntaxe js que j'utilisais ?
En fait il faut savoir que 'this' fait référence à la fonction anonyme elle même si tu utilises la syntaxe js standard : function (){}. Avec les fonctions fléchées ou Arrow function de la syntaxe es6, 'this' fera toujours référence à la classe dans laquelle cette fonction est implémentée.
Si j'ai bien compris c'était à cause de la syntaxe js que j'utilisais ?
En fait il faut savoir que 'this' fait référence à la fonction anonyme elle même si tu utilises la syntaxe js standard : function (){}. Avec les fonctions fléchées ou Arrow function de la syntaxe es6, 'this' fera toujours référence à la classe dans laquelle cette fonction est implémentée.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.