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 :

Notation à étoiles - clignotement sur IE au survol


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Notation à étoiles - clignotement sur IE au survol
    Bonjour,

    J'essaie de réaliser un système de notation à étoiles comme on peut les voir un peu partout maintenant. Donc le principe, c'est 5 étoiles blanches alignées, et au survol, les étoiles deviennent dorées, ensuite il suffit d'un clique pour enregistrer la note dans mysql, mais je ne traîterai pas cette dernière partie dans ce post.


    Les images des étoiles sont nommées :
    - or_gauche.gif,
    - or_droite.gif,
    - blanche_gauche.gif,
    - blanche_droite.gif.

    Avant de vous expliquer le problème, voiçi mes deux fonctions javascript :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <script type="text/javascript">
    <!--
    function switch_image_defaut() // quand on ne survole plus d'étoile, la note ($note_moyenne) doit être affichée avec les images
    {
         document.getElementById("note_etoile").innerHTML = '<?php echo 'Noter ce jeu : '; 
         for ($i=1; $i <= 5; $i++)
         {
              ?><img id="etoile_<? echo $i;?>"  src="image/<? 
              if ($note_moyenne >= $i) 
              { 
                   echo 'or_'; 
              } 
              else 
              { 
                   echo 'blanche_';
              } 
              if ($i==1 || $i==3 || $i==5) 
              { 
                   echo 'gauche'; 
              } 
              else 
              { 
                   echo 'droite'; 
              }
              ?>.gif"
    onmouseout="switch_image_defaut();" onmouseover="switch_image(<? echo $i;?>);" />
         <? 
         } // fin boucle
         ?>'; 
    }
     
    function switch_image(num) // à chaque survol d'une image
    {
         var i=1;
         while (i <= 5)
         {
              if (i <= num)
              {
                   if (i == 1 || i == 3 || i ==5)
                   {
                        document.getElementById("etoile_" + i).src = "image/or_gauche.gif";
                   }
                   else
                   {
                        document.getElementById("etoile_" + i).src = "image/or_droite.gif";
                   }
              }
              else
              {
                   if (i == 1 || i == 3 || i ==5)
                   {
                        document.getElementById("etoile_" + i).src = "image/blanche_gauche.gif";
                   }
                   else
                   {
                        document.getElementById("etoile_" + i).src = "image/blanche_droite.gif";
                   }
              }
         i++;
         }
     
    }
    -->
    </script>

    Le code html :
    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
    22
    23
    24
    25
    26
    27
     
    <div id="note_etoile">
    <?php 
    echo 'Noter ce jeu : '; 
    for ($i=1; $i <= 5; $i++)
    {
         ?><img id="etoile_<? echo $i;?>"  src="image/
         <? if ($note_moyenne >= $i) 
         { 
              echo 'or_'; 
         } 
         else 
         { 
              echo 'blanche_';
         } 
         if ($i==1 || $i==3 || $i==5) 
         { 
              echo 'gauche'; 
         } 
         else 
         { 
              echo 'droite'; 
         }
         ?>.gif" onmouseout="switch_image_defaut();" onmouseover="switch_image(<? echo $i;?>);" /><? 
    } // fin boucle
    ?>
    </div>
    Le problème est donc que, sur IE, il se crée un effet de clignotement lors du survol, dû au fait qu'à chaque onmouseout, j'affiche d'abord la note moyenne (si note_moyenne = 3, trois étoiles dorées seront affichées), suivi de la note qui est en train d'être sélectionnée (si je survol la 5ème étoile, ça va donc afficher 3/5 puis tout de suite après 5/5).

    En fait j'ai identifié le problème. Ce n'est pas une lenteur d'ie pour l'affichage des images. Le problème est que quand je passe de etoile_1 à etoile_2, seule le onmouseout s'éxécute (donc l'affichage de la note moyenne), et il faut que je rebouge un peu la souris sur image_2 pour que le onmouseover se déclanche. Pour résumé, au premier pixel dans etoile_2, j'ai seulement le onmouseout de déclanché, vu que j'ai quitté etoile_1, et au second pixel dans etoile_2, j'aurai onmouseover.

    Merci d'avance.

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    J'ai tenté un tout autre système en passant par les coordonnées de mes images et de la souris, mais il s'avère inefficace suivant la résolution de l'écran. Donc j'aimerai bien simplement trouver le moyen de faire fonctionner ce onmouseout sur ie.

Discussions similaires

  1. [C#][2.0] Clignotement sur redimensionnement d'une fenetre
    Par glebourg dans le forum Windows Forms
    Réponses: 9
    Dernier message: 02/01/2012, 14h58
  2. afficher image sur une case survolée
    Par womannosky dans le forum 2D
    Réponses: 10
    Dernier message: 22/07/2008, 20h57
  3. Voyant vert Clignotant sur l'alimentation
    Par yepAccess dans le forum Composants
    Réponses: 9
    Dernier message: 27/03/2008, 18h02
  4. [AJAX] Notation étoile
    Par Micke7 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 06/02/2008, 12h40
  5. Réponses: 4
    Dernier message: 03/04/2007, 10h38

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