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 :

Implémentation de onMouseOver / onMouseout


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Femme Profil pro
    Architecte réseau
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Implémentation de onMouseOver / onMouseout
    Bonjour,
    Je me permets de vous demander de l'aide concernant un petit programme en JavaScript que j'ai réalisé.
    Il s'agit d'un exercice en classe, le professeur demande à ce qu'on utilise une fonction (qui change l'image grâce à OnMouseOver) au niveau du javascript et de la rappeler par la suite dans le corps html, comme suit:
    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
     
    <HTML>
    <HEAD>
    <SCRIPT language="JavaScript">
     
    function Survoler(){Document.images[0].src = 'image_2.png'}
     
    function nonSurvoler(){Document.images[0].src= 'image_1.png';}
     
    </SCRIPT>
    </HEAD>
     
    <BODY> <form name="images">
        <a href = "mailto://nom.prenom@gmail.com"><img src="image_1.png" name="image" onMouseOver = "Survoler()"; onMouseOut = "nonSurvoler()";> </a>
     
    </form>    
    </BODY>
    </HTML>
    Le problème c'est qu'au niveau du navigateur il n'affiche que la première image, lorsque je survole avec ma souris, firebug (sous mozilla) affiche une erreur au niveau du :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Survoler(){Document.images[0].src = 'image_2.png'}
    ainsi que la fonction Je suis coincée j'espère que quelqu'un pourra m'aider.

    Merci d'avance

  2. #2
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je pense que l'erreur vient des ';' aprés le onmouseover et le onmouseout.
    Soit tu met pas du tout de ";", soit tu les met dans les "".

    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="image_1.png" name="image" onMouseOver="Survoler();" onMouseOut="nonSurvoler();">
    soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="image_1.png" name="image" onMouseOver="Survoler()" onMouseOut="nonSurvoler()">
    Puis tu as aussi une erreur de ';' que tu as oublié dans ta fonction Survoler().
    ce qu'il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Survoler(){Document.images[0].src = 'image_2.png'; }

    Tu peux faire comme ca aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function change_image()
    {
    document.getElementById('image').src="image_2.png";
    }
    aprés avoir déclaré ton image comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img id="image" name="image" src="image_1.png" onMouseOver = "Survoler()" onMouseOut = "nonSurvoler()">
    toujours déclarer un ID (et un name c'est mieux pour IE), à un objet.
    TOUJOURS == ID

    Bizard que ton prof n'ai pas insisté sur les ID....
    Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )

  3. #3
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    l'objet "Document" n'existe pas, javascript est sensible à la case.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(a='eval(a)')
    recursive make it evil
    eval make it eval

  4. #4
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    je l'avais pas vu celle là lol.
    Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )

  5. #5
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par Darkyl Voir le message
    Puis tu as aussi une erreur de ';' que tu as oublié dans ta fonction Survoler().
    ce qu'il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Survoler(){Document.images[0].src = 'image_2.png'; }
    Non, en javascript, le saut de ligne ou la fermeture d'un bloc (le cas ici) correspond à une fin d'instructions et dans ce cas le point virgule n'est pas obligatoire.

    Note: mais il est recommandé de le mettre dans les 2 cas; dans le cas d'un saut de ligne, si un jour ton fichier est retranscris par exemple par un minimiser de code qui supprime les sauts. (c'est la ***** pour retrouver où il manque un ";") Et en fin de bloc par habitude, si après tu rajoutes une instructions sans remarquer qu'il manque un ";" à la précédente, tu vas te prendre la tête pour rien.


    Enfin ce qui me choque dans :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href = "mailto://nom.prenom@gmail.com"><img src="image_1.png" name="image" onMouseOver = "Survoler()"; onMouseOut = "nonSurvoler()";> </a>

    avant même le ";" en dehors des guillemets, c'est l'ESPACE entre l'attribut et sa valeur. l'espace servant à délimiter les attributs pour le navigateur, ton code risque fort d'être considéré comme un nouveau nom d'attribut pour le moins étrange.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(a='eval(a)')
    recursive make it evil
    eval make it eval

  6. #6
    Candidat au Club
    Femme Profil pro
    Architecte réseau
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Merci.
    Merci infiniment à tous pour la précieuse aide, effectivement les points-virgules étaient mal placés, JS ne reconnait pas Document mais document, l'espace entre les attributs et les valeurs est à bannir et pour finir la balise form est à bannir aussi .

    Bref, pour les prochains débutants comme moi je vous donne mon code final (qui marche). Et encore merci à tous.

    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
    <HTML>
    <HEAD>
    <SCRIPT language="JavaScript">
     
    function Survoler(){document.images[0].src = 'image_2.png'}
     
    function nonSurvoler(){document.images[0].src= 'image_1.png';}
     
    </SCRIPT>
    </HEAD>
     
    <BODY> 
        <a href="mailto://nom.prenom@gmail.com"><img src="image_1.png" name="image" onMouseOver="Survoler();"onMouseOut="nonSurvoler();"> </a>
     
     
    </BODY>
    </HTML>

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 048
    Points : 44 562
    Points
    44 562
    Par défaut
    Bonjour,
    on pourra également signaler que <SCRIPT language="JavaScript"> est obsoléte, que l'on doit utiliser <script type="text/javascript"> ou simplement <script> en HTML5.

    Il est à noter également qu'il est fortement déconseiller d'utiliser les mots se rattachant au DOM, ici images, pour le name de la FORM.
    Il y a fort à parier que document.images, dans le contexte ci dessus pointe sur la FORM et non sur la collection images, il n'est qu'à mettre un alert( document.images.tagName); en entrée de fonction pour s'en rendre compte.

    Enfin dans ton cas tu peux passer en paramètre l'objet à l'origine de l'événement via le mot clé this.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <a href = "mailto://nom.prenom@gmail.com">
      <img src="image_1.png" name="image" onmouseover = "Survoler( this)"; onmouseout = "nonSurvoler( this)";>
    </a>
    et dans ta fonction faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function Survoler( obj){
      obj.src = 'image_2.png';
    }
    function nonSurvoler( obj){
      obj.src= 'image_1.png';
    ...}
    mais ce n'est peut être pas encore au cours.

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 048
    Points : 44 562
    Points
    44 562
    Par défaut
    l'espace entre les attributs et les valeurs est à bannir et pour finir la balise form est à bannir aussi .
    concernant l'espace il peut tout à fait exister et n'engendra pas de problème, quant à bannir la balise FORM pas si tu as besoin de créer un formulaire.

  9. #9
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    concernant l'espace il peut tout à fait exister et n'engendra pas de problème
    oups( je sais pas pourquoi j'étais persuadé du contraire)
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(a='eval(a)')
    recursive make it evil
    eval make it eval

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Willpower
    oups( je sais pas pourquoi j'étais persuadé du contraire)
    Peut-être parce que ça pique quand même un peu les yeux !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. Encore des onmouseover onmouseout imbriqués
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/03/2008, 10h53
  2. OnMouseOver, OnMouseOut et OnClick
    Par the.l666 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/12/2007, 09h45
  3. [ASP1.1]Utiliser onMouseOver/onMouseOut sur datagrid?
    Par Cervantes dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/05/2007, 13h33
  4. accès à onmouseover/onmouseout => changement de style
    Par tomy4ever dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/12/2006, 22h33
  5. onClick/onMouseOver/onMouseOut + <a href>+<img>
    Par lipczynski dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/11/2004, 14h53

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