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 :

Simplification de code sur onmouseover/out


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Par défaut Simplification de code sur onmouseover/out
    Bonjour

    Je veux appliquer onmouseover / out à chacun des éléments de <li>. Je ne peux utiliser qu'une seule fois l'id="a1", donc ce code ne fonctionne que pour le premier élément. Mettre l'id dans le <div> comme <div id="a1"> ne fonctionne pas. Merci pour votre aide. Romeo

    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
    <div>
            <ul>
                <li> <a id="a1" hef="#">Bienvenue</a> </li>
                <li> <a hef="#">Contact</a> </li>
                <li> <a hef="#">Info</a> </li>
           </ul>
    </div>
     
        <script type="text/javascript">
            var a = document.getElementById("a1");
            a.onmouseover = txtover
            a.onmouseout = txtout
     
            function txtover() { a.style.color = "red"; }
            function txtout() { a.style.color = "green"; }
        </script>

  2. #2
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Par défaut
    Salut
    Merci pour ta réponse. j'ai essayé ceci mais ça ne marche pas:

    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
    <body style="background-color:snow">
        <div>
            <ul>
                <li> <a class="menu" href="#" > Welkom</a> </li>
                <li> <a class="menu" href="#">Onze school </a> </li>
                <li> <a class="menu" href="#"> Onze talenten</a> </li>
                <li> <a class="menu" href="#"> Info</a> </li>
        </ul>
        </div>
     
        <script type="text/javascript">
            const a1 = document.getElementsByClassName("menu");
            for (i = 0; i < 4; i++) {
                a1[i].onmouseover = txtover1
                a1[i].onmouseout = txtout1
            }
     
            function txtover1() { a1[i].style.color = "red"; }
            function txtout1() { a1[i].style.color = "white"; }
           
        </script>
    </body>

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 651
    Par défaut
    pour montrer du code sur ce forum, vous pouvez utiliser le bouton "#" juste au dessus pour le mettre en forme.

    pour votre souci de javascript, regardez dans la console de développement et vous verrez des erreurs javascript.

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Par défaut
    Merci pour la préponse. je vois en effet la faute qui ne sait pas lire la property 'style'. Mais je ne vois pas comment la corriger.

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 651
    Par défaut
    le message indique surtout que a1[i] n'existe pas dans les 2 fonctions. essayez en mettant this à la place.

    je pense que vous pouvez faire ce changement de couleur en css en utilisant ":hover" et sans javascript :
    https://developer.mozilla.org/fr/docs/Web/CSS/:hover
    n'hésitez pas à ouvrir une nouvelle discussion dans le forum css si vous voulez de l'aide pour essayer cela.

  7. #7
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Par défaut
    Ce code ne donne aucune faute, mais ne marche toujours pas (rien ne se passe). ??
    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
    <body>
            <ul>
                <li> <a class="a1" href="#"> Bienvenue</a> </li>
                <li> <a class="a1" href="#">Contact </a> </li>
                <li> <a class="a1" href="#"> Info</a> </li>
            </ul>
     
        <script type="text/javascript">
            var a = document.getElementsByClassName("a1");
            a.onmouseover = txtover
            a.onmouseout = txtout
            function txtout() { a.style.color = "white"; }
            function txtover() { a.style.color = "red"; }
        </script>
    </body>

  8. #8
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 651
    Par défaut
    à partir de votre code de 12 h 06, j'ai juste mis "this" dans les fonctions :
    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
    <body style="background-color:snow">
        <div>
            <ul>
                <li> <a class="menu" href="#" > Welkom</a> </li>
                <li> <a class="menu" href="#">Onze school </a> </li>
                <li> <a class="menu" href="#"> Onze talenten</a> </li>
                <li> <a class="menu" href="#"> Info</a> </li>
        </ul>
        </div>
     
        <script type="text/javascript">
            const a1 = document.getElementsByClassName("menu");
            for (i = 0; i < 4; i++) {
                a1[i].onmouseover = txtover1
                a1[i].onmouseout = txtout1
            }
     
            function txtover1() { this.style.color = "red"; }
            function txtout1() { this.style.color = "white"; }
           
        </script>
    </body>

  9. #9
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Par défaut
    Merci. Votre version marche. Ma dernière version ne marche pas car elle ne différencie pas entre les elements <li>, je crois. Tous sont 'a' sans distinction.

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    Citation Envoyé par mathieu
    je pense que vous pouvez faire ce changement de couleur en css en utilisant ":hover" et sans javascript :
    https://developer.mozilla.org/fr/docs/Web/CSS/:hover
    c'est à mon sens la méthode la plus « efficace » en ce qui concerne ton besoin.

    Attention également aux effets de bord avec mouseover/out, peut-être préférer mouseenter/leave ou mieux aujourd’hui pointerenter/leave.

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

Discussions similaires

  1. Question sur simplification de code (lodash?)
    Par Paul75 dans le forum Angular
    Réponses: 0
    Dernier message: 15/04/2020, 19h20
  2. Réponses: 2
    Dernier message: 19/11/2015, 15h55
  3. Simplification de code sur double requette sql pour trier les colonnes.
    Par vandman dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/03/2015, 13h43
  4. Onmouseover/out sur div avec IE8
    Par Kahlyv dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 26/11/2009, 17h21
  5. Réponses: 4
    Dernier message: 20/09/2009, 11h12

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