IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Defilement automatique pour un diaporama


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut Defilement automatique pour un diaporama
    Bonjour,
    Je réalise actuellement un diaporama d'image en php/javascript et fonctionne très bien.
    Je voudrais lui rajouter un bouton pour faire défiler les images automatiquement, mais je bloque un peu.
    Je me sers du php pour me générer un tableau qui contient toutes les photos d'un répertoire et un formulaire où j'affiche mes photos avec 5 boutons (Début, précédente,Démarrer,Suivante,Fin); mis à part démarrer, tous mes boutons fonctionnent parfaitement.
    Quand j'ai voulu faire la fonction pour gérer le défilement automatique, j'ai quelques soucis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function automatik(bouton)
    {
      forward();
      bouton.value="Stop";
      window.setTimeout("Automatik()",1000);
     
    if((bouton.value=="Stop") && (boucle==true))
      {
         bouton.value="Commencer";
         boucle=false;
         //alert('coucou');
       }
    }
    Ma fonction forward sert à afficher l'image suivante, j'affiche "Stop" sur mon bouton et je rappelle ma fonction au bout d'un certain temps (ici 1s pr éviter d'attendre trop longtemps).
    Quand je clique une fois, les images s'affichent bien les unes après les autres, et quand je reclique, j'arrive bien dans ma condition (un "alert" m'a permis de le vérifier): mais au moment où j'arrive sur mon 'alert', j'aimerais que le diaporama s'arrête, donc à arrêter cette fonction.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Points : 133
    Points
    133
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function automatik(bouton)
    {
      forward();
      bouton.value="Stop";
     
    if((bouton.value=="Stop") && (boucle==true))
      {
         bouton.value="Commencer";
         boucle=false;
         //alert('coucou');
       } else {
          window.setTimeout("Automatik()",1000);   //<<<<<<<<<<<<<<<<
       }
    }

  3. #3
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Quand je mets ce code, il execute qu'une seule fois le "window.setTimeout" ce qui correspond à afficher la photo suivante et s'arrête.
    Peut-être que çà provient de mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name="formname">
    <img src="<?echo $tablo_foto[0];?>" name="photoslider" WIDTH=<?echo $image_h;?> HEIGHT=<?echo $image_v;?>>
    <input type="button" name="slidebutton" onClick="automatik(this);" value="Commencer" title="Lecture automatique" style="width:75;border:1 SOLID #e6e6e6;" visible=false>
    </form>
    En fait, j'avais mis une variable "boucle" pour savoir quand il etait en lecture automatique, qui est a "false" par défaut, mais je ne sais pas quand la mettre ou s'il faut que je la mette à "true".

  4. #4
    Membre actif
    Homme Profil pro
    PDG
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : PDG
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 225
    Points
    225
    Par défaut
    Dans l'exemple donné par sympho, le setTimeout appelle la fonction Automatik() alors que son nom est automatik().
    La différence a minuscule/A majuscule fait qu'elle n'est pas appelée, donc le setTimeout ne se fait pas.

  5. #5
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Effectivement, je n'avais pas vu cette erreur, mais il ne faut pas en vouloir à Sympho car c'était ce que j'avais dans mon code.
    Mais même en mettant un a minuscule (donc un rappel de fonction), çà me fait un seul appel. En gros ce que j'aimerais, c'est lorsqu'on clic, çà me lance le diaporama et si on reclic çà l'arrete et là, je suis bloqué.

  6. #6
    Membre actif
    Homme Profil pro
    PDG
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : PDG
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 225
    Points
    225
    Par défaut
    En fait ça ne peut pas marcher comme ça.
    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function automatik(bouton)
    {
      if(bouton.value=="Commencer")
      {
        bouton.value="Stop";
        automatik_timer = setTimeout("forward()",1000);
      }
      else
      {
         clearTimeout(automatik_timer);
         bouton.value="Commencer";
       }
    }

  7. #7
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Avec ce code, il m'affiche juste la photo d'après; le problème est, qu'une fois lancé, le bouton vaut "Stop" et çà passe dans le else. J'ai essayé avec un while:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(bouton.value=="Commencer")
         bouton.value="Stop";
    else
         bouton.value="Commencer";
     
    while(bouton.value=="Stop")
      window.setTimeout("forward()",1000);
    mais çà fait planté firefox.
    Je me demande si ma fonction ne doit pas être du style:
    function automatik(bouton, boucle) où je passe un booleen en parametre pour lui préciser si je suis dans le cas de l'appel recursif ou pas ?

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    une des solutions possibles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <script type="text/javascript">
     
    var t;
     
    function auto(bouton){
     
    if(bouton.value=="Commencer"){
    	t=setInterval("forward()",1000);
    	bouton.value="Stop"
    }
    else{
    	clearTimeout(t);
    	bouton.value="Commencer"
    }
     
     
    }
     
    </script>
     
    <p>
    <input type="button" value="Commencer" onclick="auto(this)" />
    </p>

  9. #9
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Merci Javatwister, çà marche nickel ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/06/2006, 11h58
  2. saisie automatique pour un champs
    Par god0126 dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2006, 10h57
  3. Réponses: 3
    Dernier message: 25/01/2006, 17h54
  4. [VB.NET] ScrollBar automatique pour Listbox
    Par Aspic dans le forum VB.NET
    Réponses: 6
    Dernier message: 19/12/2005, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo