Bonjour à tous,
Je suis tout nouveau ici j'ai découvert donc le tuto pour créer un carrousel en javascript avec Jquery que je trouve vraiment super étant vraiment novice dans le domaine du javascript. Enfin bref j'ai donc suivie la vidéo du début à la fin cependant j'ai un problème au niveau de l'affichage de la page html, je m'explique le carrousel s'affiche correctement les trois slides le timer s'exécute correctement toutes les 5 secondes en boucle jusque la tout va bien mais le problème est que des l'instant que je veu cliquer sur une des slides par ex de passer de la 1 à la 3 le carrousel bug et toutes les 0.5 sec environ les slides changent et se mélange. Je sait si je suis assez clair dans mon explication mais du coup je sait pas du tout quoi faire si c'est une erreur dans le code js ou pas j'ai essayer de chercher sur le forum ou dans les commentaires mais il n'y a pas l'air d'avoir une réponse en rapport à ca.
Je vous remercie par avance de vos réponses en espérant trouver la solution à mon problème.
Voici mon code js:
/*
CARROUSSEL JS
*/
var carrousel = {
nbSlide:0,
nbCurrent:1,
elemCurrent:null,
elem:null,
timer:null,
init:function(elem){
this.nbSlide=elem.find(".slide").length;
// Créer la pagination
elem.append('<div class="navigation"></div>');
for(var i=1;i<=this.nbSlide;i++){
elem.find(".navigation").append("<span>"+i+"</span>");
}
elem.find(".navigation span").click(function(){carrousel.gotoSlide($(this).text());})
// Initialisation du carrousel
this.elem=elem;
elem.find(".slide").hide();
elem.find(".slide:first").show();
this.elemCurrent = elem.find(".slide:first");
this.elem.find(".navigation span:first").addClass("active");
// Création du timer
carrousel.play();
// Arret du carrousel par survol de la souris
elem.mouseover(carrousel.stop);
elem.mouseout(carrousel.play);
},
gotoSlide : function(num){
if(num==this.nbCurrent){return false;}
/* Animation en fadein/fadeOut
this.elemCurrent.fadeOut();
this.elem.find("#slide"+num).fadeIn();
*/
/* Animation en Slide */
var sens = 1;
if(num<this.nbCurrent){sens = -1;}
var cssDeb ={"left":sens*this.elem.width()};
var cssFin ={"left":-sens*this.elem.width()};
this.elem.find("#slide"+num).show().css(cssDeb);
this.elem.find("#slide"+num).animate({"top":0,"left":0},500);
this.elemCurrent.animate(cssFin,500);
this.elem.find(".navigation span").removeClass("active");
this.elem.find(".navigation span:eq("+(num-1)+")").addClass('active');
this.nbCurrent = num;
this.elemCurrent = this.elem.find('#slide'+num);
},
next : function(){
var num = this.nbCurrent+1;
if(num>this.nbSlide){
num = 1;
}
this.gotoSlide(num);
},
prev : function(){
var num = this.nbCurrent-1;
if(num<1){
num = this.nbSlide;
}
this.gotoSlide(num);
},
stop : function(){
window.clearInterval(carrousel.timer);
},
play : function(){
window.clearInterval(carrousel.timer);
this.timer = window.setInterval("carrousel.next()",5000);
}
}
$(function(){
carrousel.init($("#carroussel"));
});
Alors merci quand même pour ta réponse flo mais en fait j'ai réussi à trouver la solution en réalité j'ai remplacé la ligne
this.timer = window.setInterval("carrousel.next()",5000);
par
carrousel.timer = window.setInterval("carrousel.next()",5000);
Ensuite il me restait juste une autre petite erreur lorsque je cliquais sur la 1ère slide le carrousel s'arrétait et lorsque je cliquais sur la 2 au lieu de repartir sur la 3 le carrousel repartait sur la 1ère donc j'ai remplacé la ligne
var num = this.nbCurrent + 1;
par
var num = parseInt(this.nbCurrent) + 1;
voila si ca peut servir à d'autre utilisateurs de ce beau tuto qui aurait le même soucis ;)
tu as un lien?, tu as regardé si tu avais des messages d'erreur dans la console de ton explorateur internet?
alors j'ai regardé sur la console du navigateur il n'y a pas d'erreur d'affiché mais je viens d'héberger ma page de test pour voir comment se comporte mon carrousel si vous trouvez d'où vient le problème.
http://www.muaythai-chavelot.net/carroussel/index.html
avant la ligne 72 peut mettre
alert("cible"+num+" courrant"+nbCurrent);
en regardant le comportement de ton carousel, j'ai l'impression que ton prb viens
next : function(){
var num = this.nbCurrent+1;
if(num>this.nbSlide){
num = 1;
}
this.gotoSlide(num);
},
ça ressemble à une mauvaise incrémentaions je dirai.