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 :

Affecter un événement dans une boucle


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Novembre 2020
    Messages : 1
    Par défaut Affecter un événement dans une boucle
    Bonsoir,

    Je rencontre un problème, j'aimerais qu'un click sur la div img-to-hover active la classe 'active' sur la div img-hover.
    Je partage mes deux tests javascript qui ne fonctionne pas mais qui d'après moi revient à faire la même chose.
    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
    <div class="row">
        <div class="col-7 relative hidden">
            <img class="img-to-hover" src="img/oil_station.jpg" alt="">
            <div class="img-hover">
                <div class="img-hover-box">
                    <div class="img-hover-content">
                        <span class="img-hover-title">Ceci est un message à caractère informatif.</span><br><br>
                        <span class="img-hover-description">Ceci est un message à caractère informatif.</span>
                    </div>
                </div>
            </div>
        </div>
        <div class="col-3 relative hidden">
            <img class="img-to-hover" src="img/oil_station2.jpg" alt="">
            <div class="img-hover">
                <div class="img-hover-box">
                    <div class="img-hover-content">
                        <span class="img-hover-title">Ceci est un message à caractère informatif.</span><br><br>
                        <span class="img-hover-description">Ceci est un message à caractère informatif.</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    JAVASCRIPT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const img = document.querySelectorAll(".img-to-hover");
    const hover = document.querySelectorAll('.img-hover');
     
    for (i = 0; i<img.length; i++) {
        img[i].addEventListener('click', () => {
            hover[i].classList.toggle('active');
        });
    }

  2. #2
    Expert confirmé

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Billets dans le blog
    5
    Par défaut
    Bonjour,
    la variable i n'est pas définie dans le scope du listener. Une des façon de faire et de récupérer currentTarget et dans ton cas l'élement adjacent, là tu pourras lui ajouter la classe active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (let i = 0; i<img.length; i++) {
        img[i].addEventListener('click', (e) => {
             console.log(e.currentTarget.nextElementSibling)
        });
    }

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    Par défaut
    Oui!

    Et pendant que tu es, tu peux te débarrasser des variables:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.querySelectorAll(".img-to-hover").forEach(v => {
    	v.addEventListener("click",() => v.nextElementSibling.classList.toggle('active'))
    })

  4. #4
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 744
    Par défaut
    jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i = 0; i<img.length; i++) {
    j'ose espérer que tu declare la variable i car en faisant de cette façon tu créé une variable globale, utilise une variable let

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (let i = 0; i<img.length; i++)

Discussions similaires

  1. [FLASH MX2004] Problème accent dans un XML
    Par cinetryx dans le forum Flash
    Réponses: 10
    Dernier message: 30/05/2007, 00h26
  2. Problème echo dans shell
    Par Dupont Lionel dans le forum Linux
    Réponses: 5
    Dernier message: 08/02/2005, 13h23
  3. Probleme collage dans un TEdit
    Par Zetmurin dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/10/2004, 13h19
  4. probleme mouvement dans un paysage
    Par nonoRedDevils dans le forum OpenGL
    Réponses: 24
    Dernier message: 24/06/2004, 12h12
  5. [BCB6] Probleme onglet dans IDE
    Par bgautier dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/01/2004, 16h20

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