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 :

[Débutant] RollOver simple


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut [Débutant] RollOver simple
    Bonjour,

    Comme le précise le titre je m'essaie au JavaScript. Je voudrais créer un rollover qui a ces caractéristiques :
    2 images
    lors du passage sur l'une ou l'autre leur source s'affiche en-dessous
    Je m'y suis essayé mais le comportement n'est pas du tout celui attendu!

    Lors du chargement de la page, la source de la deuxième image est déjà affichée. Lorsque je passe dessus elle s'en va puis que je sois dessus ou pas il n'y a plus de réaction, aucune source ne s'affiche.

    Voici mon code :

    HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html>
    <head>
    <title> 05 Images survol nom </title>
    <script language="JavaScript" type="text/JavaScript" src="05.js" />
    </head>
    <body>
    <a href='1.html'><img src='abcd.png' alt='banner1' id='img1' /></a>
    <a href='2.html'><img src='xyz.png' alt='banner2' id='img2' /></a>
    <h3 id='res'></h3>
    </body>
    </html>
    05.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
    window.onload = initRoll;
     
    function initRoll() {
    	for (var i=0 ; i<document.images.length ; i++) {
    		var imgObj = document.images[i];
    		roll(imgObj);
    	}
    }
     
    function roll(imgObj) {
    	imgObj.onmouseover = rollOver(imgObj);
    	imgObj.onmouseout = rollOut;
    }
     
    function rollOver(imgObj) {
    	document.getElementById("res").innerHTML = imgObj.src;
    }
     
    function rollOut() {
    	document.getElementById("res").innerHTML = "";
    }
    Je ne parviens pas à trouver l'erreur, peut-être pourrez-vous m'en apprendre davantage.

    Merci!

    webrider

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    en faisant ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imgObj.onmouseover = rollOver(imgObj);
    t'appelles directement rollOver() et tu copies le retour de la fonction dans imgObj.onmouseover donc ca affiche la source.

    Il ne me semble pas qu'il y ait un moyen de faire ca sans test du navigateur, s'il y en a un ca m'intéresse aussi. FF implémente pas window.event du DOM 1 alors que IE si mais il implémente pas Event du DOM 2, perso je ferais ca :

    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
    function roll(imgObj) {
    	imgObj.onmouseover = rollOver;
    	imgObj.onmouseout = rollOut;
    }
     
    function rollOver(evt) {
    	try	{
    		// Gecko
    		document.getElementById("res").innerHTML = evt.currentTarget.src;
    	}
    	catch(e)	{
    		// IE
    		document.getElementById("res").innerHTML = window.event.srcElement.src;
    		// ou
    		document.getElementById("res").innerHTML = this.src;
     
    	}
    }
    A ma connaissance y a pas moyen de passer récupérer l'objet déclencheur sans passer par window.event...
    Bye

    [edit]
    Bon bin finalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function rollOver() {
    	document.getElementById("res").innerHTML = this.src;
    	}
    tourne sous IE et FF, je sais pas ce qu'il en est sous les autre navigateur.
    J'ai confondu, c'est pas pour récupérer le déclencheur que c'est galère, mais l'événement en lui-même.
    [/edit]

    [REDIT]
    Tu peux pas utiliser this sous Opera.
    [/]

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    bonjour,

    il n'est pas nécesaire de rechercher l'élément déclencheur : donne à mouseOver l'objet qui déclenche l'événement onmousover.
    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
    25
    26
    27
    28
    29
    30
    31
     
    <html>
    <head>
    <title> 05 Images survol nom </title>
     
    <script type="text/javascript">
    <!--
    function mouseOver(obj)
    {
      document.getElementById("res").innerHTML = obj.src;
    }
     
    function mouseOut()
    {
      document.getElementById("res").innerHTML = "";
    }
     
    //-->
    </script>
     
     
    </head>
    <body>
     
    <a href='1.html'><img src='abcd.png' onmouseover="mouseOver(this)" onmouseout="mouseOut()" alt='banner1' id='img1' /></a>
    <a href='2.html'><img src='xyz.png' onmouseover="mouseOver(this)" onmouseout="mouseOut()"  alt='banner2' id='img2' /></a>
     
    <h3 id='res'></h3>
     
    </body>
    </html>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ok merci pour vos réponses!

    Je vais plutôt me satisfaire de la réponse d'Auteur pour l'instant car plus compréhensible vu mon niveau zéro en JavaScript.

    Bonne soirée!

    webrider

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

Discussions similaires

  1. [Débutant] Problème simple
    Par kenny49 dans le forum Applets
    Réponses: 2
    Dernier message: 16/04/2007, 22h47
  2. [Débutant] Calcul simple
    Par Kstark dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/02/2007, 09h51
  3. Réponses: 2
    Dernier message: 18/01/2007, 21h38
  4. [Débutant] - Redirection simple
    Par erwan.bodere dans le forum Apache
    Réponses: 9
    Dernier message: 19/06/2006, 17h19
  5. [CSS][Débutant] Rollover sur ligne d'un tableau
    Par Nyx de Tours dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 12/07/2005, 09h25

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