Gestion evenements souris

bside8 Messages postés 8 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 15 avril 2003 - 20 mars 2003 à 14:02
monoar Messages postés 6 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 9 juin 2007 - 7 févr. 2007 à 11:17
Bonjour,

j'essaie depuis un sacré moment de faire fonctionner le code qui suit...(récupéré dans la source de MySQL)
Impossible de le faire tourner !!! L'objectif, comme dans MySQL, est de présenter des résultats de requête dans un tableau et d'en faciliter la visibilité et la lecture.

Théoriquement, le fait de passer le pointeur de la souris sur une ligne doit la faire devenir verte ; la sélectionner : orange.

Qq'1 peut-il me dépanner ?

Merci

<code>
<?php
echo "<html><head><title>Test variation couleurs des lignes</title></head>";
echo "";
echo "\";
echo \"----
a";
echo "";
echo "</html>";
?>

2 réponses

LeMalinou Messages postés 1 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 30 juillet 2003
30 juil. 2003 à 14:44
Salut !

J'etais dans le même cas que toi et je voulais utiliser cette fameuse fonction "setPointer" mais pas moyen que mes lignes changent de couleur !!!
Alors en fouillant un peu sur le net j'ai trouvé le code du script correspondant à l'adresse:
http://cutephp.com/forum/index.php?s= c6b180ce7056fec22777dcebf020fd95&showtopic=1582&st=0&#entry6852
Donc je t'avoue je n'ai aucun mérite ;)

Par contre j'ai modifié un peu le code car chez moi ca marchait pas parfaitement:

/**
* Sets/unsets the pointer and marker in browse mode
*
* @param   object    the table row
* @param   integer  the row number
* @param   string    the action calling this script (over, out or click)
* @param   string    the default background color
* @param   string    the color to use for mouseover
* @param   string    the color to use for marking a row
*
* @return  boolean  whether pointer is set or not
*/
function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
   var theCells = null;
  
   // 1. Pointer and mark feature are disabled or the browser can't get the
   //    row -> exits   if ((thePointerColor '' && theMarkColor '')
       || typeof(theRow.style) == 'undefined') {
       return false;
   }

   // 2. Gets the current row and exits if the browser can't get it
   if (typeof(document.getElementsByTagName) != 'undefined') {
       theCells = theRow.getElementsByTagName('td');
   }
   else if (typeof(theRow.cells) != 'undefined') {
       theCells = theRow.cells;
   }
   else {
       return false;
   }

   // 3. Gets the current color...
   var rowCellsCnt  = theCells.length;
   var domDetect    = null;
   var currentColor = null;
   var newColor     = null;
   var marked_row = new Array();
   // 3.1 ... with DOM compatible browsers except Opera that does not return
   //         valid values with "getAttribute"
   if (typeof(window.opera) == 'undefined'
       && typeof(theCells[0].getAttribute) != 'undefined') {
       currentColor = theCells[0].getAttribute('bgcolor');
       domDetect    = true;
   }
   // 3.2 ... with other browsers
   else {
       currentColor = theCells[0].style.backgroundColor;
       domDetect    = false;
   } // end 3
   
   // 4. Defines the new color
   // 4.1 Current color is the default one
   if (currentColor == ''
       || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
       if (theAction == 'over' && thePointerColor != '') {
           newColor              = thePointerColor;
       }
       else if (theAction == 'click' && theMarkColor != '') {
           newColor              = theMarkColor;
       }
   }
   // 4.1.2 Current color is the pointer one   else if (currentColor thePointerColor.toLowerCase() || currentColor.toLowerCase() thePointerColor.toLowerCase()
            && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
       if (theAction == 'out') {
           newColor              = theDefaultColor;
       }
       else if (theAction == 'click' && theMarkColor != '') {
           newColor              = theMarkColor;
           marked_row[theRowNum] = true;
       }
   }
   // 4.1.3 Current color is the marker one   else if (currentColor theMarkColor.toLowerCase() ||currentColor.toLowerCase() theMarkColor.toLowerCase()) {
       if (theAction == 'click') {
           newColor              = (thePointerColor != '')
                                 ? thePointerColor
                                 : theDefaultColor;
           marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                 ? true
                                 : null;
       }
   } // end 4
   
   // 5. Sets the new color...
   if (newColor) {
       var c = null;
       // 5.1 ... with DOM compatible browsers except Opera
       if (domDetect) {
           for (c = 0; c < rowCellsCnt; c++) {
               theCells[c].setAttribute('bgcolor', newColor, 0);
           } // end for
       }
       // 5.2 ... with other browsers
       else {
           for (c = 0; c < rowCellsCnt; c++) {
               theCells[c].style.backgroundColor = newColor;
           }
       }
   } // end 5

   return true;
} // end of the 'setPointer()' function


A verifier tout de même...
Et tu l'appelles avec:
onmouseXXX="setPointer(this, , 'XXX', '#DDDDDD', '#CCFFCC', '#FFCC99')"
avec XXX = over, out, down !
est le numero de la ligne

Et j'ai à mon tour une question:
Comment récuperer ensuite le tableau "marked_row" qui contient les id de toutes les lignes selectionnées ?

Si je change les "return true" en "return marked_row" ???
Et même dans ce cas, comment je les recupere ensuite dans une variable php car l'appel de la fonction "setPointer" se fait pour une action "onmouse... =" ???

Dsl pour les questions stupides mais c ma 1ere utilisation de script :big)
0
monoar Messages postés 6 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 9 juin 2007
7 févr. 2007 à 11:17
Le code de [auteurdetail.aspx?ID=142850 LeMalinou] est parfait. Il fonctionne très bien chez moi : MERCI

Aurore.
0
Rejoignez-nous