Bonjour,

Voila je rencontre un petit problème avec mon code dans un slideshow.

Ce code fonctionne :


$(document).ready(function() {
var interval = setInterval(slider, 1000);
var i = 1;

function slider() { 
i = $('input[name=radio-set]:checked').attr('id');
i = (parseInt(i.slice(-1)) % 4)+1;
$('#bouton-' + i).prop('checked', true);}
});
function stopSlide(){
clearInterval(interval)}
$(".contenu").mouseover(function(event) {
event.preventDefault()
stopSlide()});

Mais quand j'ajoute le mouse out pour reprendre l'animation avec ce code:

function resumeSlide(){
setInterval(slider)}
$(".contenu").mouseout(function(event) {
event.preventDefault()
resumeSlide()});

A chaque fois que je sors la souris du slideshow il se met a défiler de plus en plus vite.
J'ai essayé plusieur script mais je ne trouve pas le bon.
Comme dis dans mes précedent poste mon niveau en JS n'est pas terrible.

J'aimerais qu'on me guide sur les erreurs que je fait, comment je devrais m'y prendre.

Merci pour vos réponses !

4 réponses


Comme ça je vois pas trop le soucis pourrais tu mettre ton code sur un service du style [https://jsfiddle.net/]() stp
Sa sera plus facile pour t'aider à résoudre ton problème

hello,
avant tout, "tabler" son code proprement (sinon c très difficile à lire...)
je n'ai rien changer à ton code, ça donne ça :

$(document).ready(function() {
    var interval = setInterval(slider, 1000);
    var i = 1;

    function slider() { 
        i = $('input[name=radio-set]:checked').attr('id');
        i = (parseInt(i.slice(-1)) % 4)+1;
        $('#bouton-' + i).prop('checked', true);
    }
});

function stopSlide(){
    clearInterval(interval)
}

$(".contenu").mouseover(function(event) {
    event.preventDefault()
    stopSlide()
});

et

function resumeSlide(){
    setInterval(slider)
}

$(".contenu").mouseout(function(event) {
    event.preventDefault()
    resumeSlide()
});

c tout de suite plus clair, non ?
et surtout, on voit tout de suite les erreurs.... :)

Bonjour.
Pour information, la fonction setinterval, nécessite un deuxième argument, qui est la valeur du timer à appliquer, ce que tu ne fais pas dans ta fonction resumeSlide.

il faut aussi redéfinir interval, sinon ça ne fonctionnera qu'une seule fois.