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 :

Click appelant méthode


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut Click appelant méthode
    Bonjour,

    J'ai un petit souci avec la gestion de mes événements au clic,
    Je tente de relier les boutons pour naviguer dans mon diaporama à mes deux méthodes sans y parvenir. Les événements au clavier fonctionnent très bien mais les boutons ne fonctionnent pas...

    Voici mon code JS :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    const
        tabDiapo = ['velo1.png', 'velo2.png', 'velo3.png', 'velo4.jpg'],
        tabTexte = ['txt1', 'txt2', 'txt3', 'txt4'],
        repertoir_image = 'images/';
     
     
    class Diaporama {
        constructor(tableau1, tableau2, repertoire, idImage, idTexte) {
            this.tableauImg = tableau1;
            this.tableauTxt = tableau2;
            this.idImg = idImage;
            this.idTxt = idTexte;
            this.repertoir_image = repertoire;
            this.tbmage = 0;
        }
     
        avancer() {
            this.tbmage++;
            if (this.tbmage > (this.tableauImg.length) - 1) {
                this.tbmage = 0;
            }
            document.getElementById(this.idImg).src = this.repertoir_image + this.tableauImg[this.tbmage];
            document.getElementById(this.idTxt).textContent = tabTexte[this.tbmage];
     
        }
     
        reculer() {
            this.tbmage--;
            if (this.tbmage < 0) {
                this.tbmage = (this.tableauImg.length) - 1
            }
            document.getElementById(this.idImg).src = this.repertoir_image + this.tableauImg[this.tbmage];
            document.getElementById(this.idTxt).textContent = tabTexte[this.tbmage];
        }
     
    }
     
    monDiaporama= new Diaporama(tabDiapo, tabTexte, repertoir_image, 'diapo', 'legende');
     
    monDiaporama.intervalId = setInterval("monDiaporama.avancer()", 5000);
     
     
    //Clavier   
    document.addEventListener("keydown", function(e){
        if(e.keyCode === 37){
            monDiaporama.reculer();
            clearInterval(monDiaporama.intervalId);
            monDiaporama.intervalId = setInterval("monDiaporama.avancer()", 5000);
        }
        else if(e.keyCode === 39){
            monDiaporama.avancer();
            clearInterval(monDiaporama.intervalId);
            monDiaporama.intervalId = setInterval("monDiaporama.avancer()", 5000);
        }
    	});	
    // Le bouton droit appelle la méthode "avancer" du diaporama
    document.getElementById("fleche_d").addEventListener("click", monDiaporama.avancer()); 
     
    // Le bouton gauche appelle la méthode "reculer" du diaporama
    document.getElementById("fleche_g").addEventListener("click", monDiaporama.reculer());
    La partie HTML concernée :
    Code HTML : 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
    <section>
            <div id ="diapo_contenair">
     
                <div class="slider" id="main-slider">
                    <figure slide="slide">
                            <img id="diapo">
                            <figcaption id="legende"></figcaption>
                    </figure>
                </div>
     
                <div class="bouttons">
                     <button id="fleche_g" type="button">
                         <i class="fas fa-chevron-circle-left" id="flechegauche"></i>
                    </button>
                    <button id="play" type="button">
                        <img src="images/buttonplaypause.png" id="playpause">
                    </button>
                    <button id="fleche_d" type="button">
                        <i class="fas fa-chevron-circle-right" id="flechedroite"></i>
                    </button>
                </div>
     
            </div>
        </section>

    (Je peux joindre le CSS si nécessaire.
    Je pense que c'est une erreur bête de débutante mais je ne parviens pas à la corriger...)
    Aussi, j'aimerai savoir comment faire pour gérer le bouton play/pause. il faut faire un clearInterval s'il est en route et réenclencher le diaporama s'il est en clearInterval?

    Merci beaucoup !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    c'est quoi comme js ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    Hum, c'est du JS pur si j'ai bien compris la question

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    [edit]
    Ha ok class ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    A quel moment les addevents sont ils faits ?
    Tes elements du DOM sont-ils instanciés ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    Merci beaucoup pour ton intervention, mais c'est finalement résolu, on m'a aidée ailleurs.
    Pour info, la solution a été l'ajout d'un function(e){}, ce qui me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Le bouton droit appelle la méthode "avancer" du diaporama
    document.getElementById("fleche_d").addEventListener("click", function(e){monDiaporama.avancer()});
     
    // Le bouton gauche appelle la méthode "reculer" du diaporama
    document.getElementById("fleche_g").addEventListener("click", function(e){monDiaporama.reculer()});
    Bonne journée

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Elztx Voir le message
    Aussi, j'aimerai savoir comment faire pour gérer le bouton play/pause. il faut faire un clearInterval s'il est en route et réenclencher le diaporama s'il est en clearInterval?
    Je n'ai pas bien regardé votre code mais peut-être que ce fil pourrait aider : Mettre un slider en pause au survol de la souris.

  8. #8
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    Hello,

    Merci pour les précisions NoSmoking !
    Beginner., merci pour le tips. Dans ce cas précis on me demande un bouton cliquable. Je n'ai pas encore ouvert ton lien, je vais regarder si y a une piste dedans, merci

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Elztx Voir le message
    Beginner., merci pour le tips. Dans ce cas précis on me demande un bouton cliquable.
    Je pense que le principe devrait être le même car c'est juste l’événement qui change dans un cas c'est le survol de la souris et dans l'autre c'est le clique sur un bouton...


    Citation Envoyé par Elztx Voir le message
    Je peux joindre le CSS si nécessaire.
    Oui pourquoi pas cela permettrait de tester et éventuellement d’ajouter la fonctionnalité "play/pause"...

  10. #10
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    Je t'envoie un Zip de mon dossier, ce sera peut-être plus simple,

    Je regarde ce soir ou demain le fil de discussion que tu m'as envoyé, merci !

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Je t'envoie un Zip de mon dossier, ce sera peut-être plus simple,
    Demander des réponses de cette manière est contraire aux buts de nos forums qui sont de permettre l'entraide mais aussi le partage des informations.
    De plus, vous pouvez importuner les membres auxquels vous vous adressez.

    Rappel : IV-K. De l'usage des MP (messages privés)

    De plus

    Une discussion = une question

    Poser plusieurs questions dans un seul et même fil nuit grandement à la qualité du forum : notamment, lors d'une recherche, tout le contenu du fil n'est pas indiqué dans le titre, elle devient donc plus ardue.

    Notre but est de maintenir une base de connaissances facile à exploiter par tous les visiteurs, utilisable par tous. Vous avez pu bénéficier de ce forum en posant vos questions, laissez la possibilité aux suivants de bénéficier des réponses en leur offrant un sujet moins dispersé.

  12. #12
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Bon ben si un autre fil est ouvert alors on pourra déplacer ma réponse là-bas pour respecter le rappel de NoSmoking...

    Citation Envoyé par Elztx Voir le message
    Aussi, j'aimerai savoir comment faire pour gérer le bouton play/pause. il faut faire un clearInterval s'il est en route et réenclencher le diaporama s'il est en clearInterval?
    Bon ben après avoir regardé votre code alors oui on peut faire comme vous dites, exemple :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let isPlay = true;
    document.getElementById("play").addEventListener("click", function (e) {
        if (isPlay) {
            clearInterval(monDiaporama.intervalId);
            isPlay = false;
        } else {
            monDiaporama.intervalId = setInterval("monDiaporama.avancer()", 5000);
            isPlay = true;
        }
    });

    Cela fonctionne bien quand on clique sur "pause" et qu’après on fait défiler les images en cliquant sur les flèches avec la souris mais cela bogue quand on utilise le clavier car dans le gestionnaire "keydown" vous stoppez puis redémarrez le timer (donc le défilement redémarre sans qu'on ait cliqué sur "play" ce qui n'est pas très agréable, non ???)... D'ailleurs je ne vois pas pourquoi faire ça (stoppez puis redémarrez le timer) dans le gestionnaire "keydown" alors que vous ne l'avez pas fait dans les gestionnaires "click" de la souris...

    On pourrait éviter de faire ça (stoppez puis redémarrez le timer) pour régler le problème :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Clavier   
    document.addEventListener("keydown", function (e) {
        if (e.keyCode === 37) {
            monDiaporama.reculer();        
        } else if (e.keyCode === 39) {
            monDiaporama.avancer();        
        }
    });

    Mais si l'objectif de "stopper puis redémarrez le timer" c'est de l'initialiser pour recommencer le compte depuis 0 alors on peut le faire mais il ne faut le faire que si le défilement n'est pas en pause et il serait plus logique dans ce cas de le faire pour les deux cas : dans le gestionnaire "keydown" et dans les gestionnaires "click" de la souris...

    A vous de voire ce n'est pas difficile à ajouter...

  13. #13
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    ( NoSmoking dis moi si je dois migrer sur un autre sujet, mais promis j'ai bientôt fini de vous embêter de toute façon !! )

    Merci beaucoup Beginner., en effet ça parait évident pour le play pause une fois fait !! Merci !
    Oui j'avais fait un clearInterval pour réinitialiser le décompte du diapo, ne voyant pas comment faire autrement..

  14. #14
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    NoSmoking dis moi si je dois migrer sur un autre sujet
    Pas forcément, mais alors pourquoi cette discussion est mise en résolue ?

  15. #15
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    pourquoi cette discussion est mise en résolue ?
    Oupsss !
    Je vais aller me documenter sur les règles du forum, promis je ferai plus de bêtises !

Discussions similaires

  1. [Débutant] Appeler méthode Delete d'un objectDataSource depuis l'évenement Click
    Par Alexandre le Grand dans le forum Entity Framework
    Réponses: 1
    Dernier message: 13/03/2014, 22h33
  2. JSP Appel méthode JAVA
    Par maxime17s dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/06/2007, 11h59
  3. appel méthode d'une dll
    Par spilmann dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 14/02/2007, 11h47
  4. Appel Méthode 4D par Javascript
    Par mxh77 dans le forum 4D
    Réponses: 2
    Dernier message: 02/10/2006, 14h48
  5. Débutante - Pb appel méthode static
    Par nmetais dans le forum Langage
    Réponses: 2
    Dernier message: 23/09/2005, 17h23

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