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 :

Associer dynamiquement un évènement a un élément


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 24
    Par défaut Associer dynamiquement un évènement a un élément
    Bonjour,

    J'ai une page qui est composée de plusieurs vues, que l'on peut atteindre de deux manières, par un click ou en scrollant.

    L'objectif est de créer un code javascript qui va "écouter" les événements de la page pour déclencher une action, l'affichage de la vue dans la console du navigateur.
    Seulement je ne maitrise pas du tout cette partie de javascript.

    Le code html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <ul id="panel-nav" style="margin-top: -145px;">
        <li style="cursor: pointer;" class="nav-news"><a data-id="news1" href="#scroll-to-news1" class=""><span>Go to the top</span></a></li>
        <li class="" style="cursor: pointer;"><a data-id="servicealaclicquot" href="#scroll-to-servicealaclicquot" class="selected"><span>Service à la Clicquot</span></a></li>
        <li class="" style="cursor: pointer;"><a data-id="naturallyclicquot3" href="#scroll-to-naturallyclicquot3" class=""><span>Naturally Clicquot </span></a></li>
        <li class="" style="cursor: pointer;"><a data-id="carnet2015" href="#scroll-to-carnet2015" class=""><span>Vendanges Clicquot 2015</span></a></li>
        <li class="" style="cursor: pointer;"><a data-id="DiscoverWeAreClicquot" href="#scroll-to-DiscoverWeAreClicquot" class=""><span>Découvrez We Are Clicquot</span></a></li>
        <li class="" style="cursor: pointer;"><a data-id="rich" href="#scroll-to-rich" class=""><span>Veuve Clicquot Rich</span></a></li>
        <li class="" style="cursor: pointer;"><a data-id="Expression" href="#scroll-to-Expression" class=""><span>Rosé Expression</span></a></li>
        <li class="" style="cursor: pointer;"><a data-id="ClicquotMail" href="#scroll-to-ClicquotMail" class=""><span>Clicquot Mail</span></a></li>
        <li class="" style="cursor: pointer;"><a data-id="prix" href="#scroll-to-prix" class=""><span>Le Prix de la femme d'affaires 2014</span></a></li>
    </ul>

    Jai créé un premier code javascript qui me premet de récupérer le nom de la vue, mais je dois lancer le code pour que l'action soit effectuée.

    code javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var a = document.getElementsByClassName("selected");
    var child = a [0].firstChild;
    var txt = child.firstChild.data;
    console.log(txt);
    Je pense que pour l'exécution automatique du code à chaque fois que l'utilisateur change de vue par un scroll ou un clic, je dois utiliser l'élément focus et faire appel à la méthode addEventListener.
    Seulement je ne sais pas si je suis sur la bonne voie et comment m'y prendre.

    Une âme charitable peut elle m'aiguiller s'il vous plaît ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 59
    Par défaut
    Hello,

    Déjà pour le lancement de ton code je le mettrais dans le onLoad() de ta page. Comme ça dès que ta page est chargé ton script se lance.

    Ensuite à l'intérieur je mettrais tous les écouteurs !


    Bon courage.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 24
    Par défaut
    Bonjour,

    justement je dois réussir à créer un code qui s'exécute de lui même uniquement quand l'évènement changement de bloc/vue s'effectue par un click ou un scroll sans modifier la partie html.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 24
    Par défaut
    j'ai créé un deuxième code qui fonctionne à moitié, le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    window.nomvue = function () {
    var a = document.getElementsByClassName("selected");
    var child = a [0].firstChild;
    var txt = child.firstChild.data;
    console.log(txt);
    }
     
    window.addEventListener("click", nomvue);
    il y a deux problèmes premièrement il me donne le nom du bloc/vue au moment du click et non celui qui est actif après le click et ensuite j'aimerais que la fonction se déclenche avec l'évènement click mais aussi le scroll.

    Merci d'avance pour votre aide

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 24
    Par défaut
    Bonjour,

    J'ai réussis à faire fonctionner comme je le voulais pour le click avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    window.nomvueclick = function () {
    var a = document.getElementsByClassName("hover");
    var b = a [0].firstChild;
    var c = b.firstChild;
    var d = c.firstChild.data;
    console.log(d);
    }
    window.addEventListener("click", nomvueclick);
    Pour le scroll j'ai fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    window.nomvuescroll = function () {
    var a = document.getElementsByClassName("selected");
    var b = a [0].firstChild;
    var c = b.firstChild.data;
    console.log(c);
    }
    window.addEventListener("scroll", nomvuescroll);
    Mais ça ne fonctionne pas.

    Quelqu'un pour m'aiguiller s'il vous plait ?

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Exemple (l'événement focus se produit avant l'événement click) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var nodes = document.querySelectorAll( "#panel-nav a" );
     
    for ( var i = 0; i < nodes.length; i++ ){
      nodes[i].addEventListener( "click", function( e ){
        console.log( e.type, e.currentTarget.href, e.currentTarget.dataset.id );
      }, false );
      nodes[i].addEventListener( "focus", function( e ){
        console.log( e.type, e.target, e.currentTarget );
      }, false );
    }
    C'est plus simple en jQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $( "a", "#panel-nav" ).on( "click focus", function( e ){
      console.log( e.type, e.currentTarget.href, e.currentTarget.dataset.id );
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. Création dynamique d'évènements
    Par thierrybatlle dans le forum Access
    Réponses: 1
    Dernier message: 14/04/2006, 19h21
  2. Réponses: 19
    Dernier message: 21/03/2006, 19h56
  3. Réponses: 6
    Dernier message: 23/02/2006, 09h47
  4. Réponses: 11
    Dernier message: 05/12/2005, 10h08
  5. Réponses: 11
    Dernier message: 03/06/2005, 15h38

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