Accueil   |   Forums   |  Offres d'emplois   |  Contact    |   Mon compte   
jeudi 9 septembre 2010 Rechercher :
Déposez votre CV gratuitement sur touslesemplois
 
comparer les prix
» Logiciels
» Jeux vidéos
» Matériel Informatique


» ASP.NET
» ASP
» SQL
» PHP
» JAVASCRIPT
» XML
 


» ACTUALITÉ / DIVERS
» DROIT DE L'INTERNET
» INFOS VIRUS
» PATCHS MICROSOFT
» SÉCURITÉ
» BASES DE DONNÉES
» DOWNLOAD .NET
» LOGITHÈQUE
» SERVICES WEB
» Y SONT FOUS !
» .NET
» ASP
» ASP.NET
» JAVA
» PHP
» XML
» LANGAGE C#
» LANGAGE VB.NET
» UNIX / LINUX
» WINDOWS
» EVÈNEMENTS
» GASP
» MICROSOFT
 



Vous êtes ici : Articles ASP > TRUCS ET ASTUCES

Changer la couleur d'une cellule
Ce script permet le changement de la couleur d'une cellule d'un tableau sur passage de la souris.


ABONNEZ-VOUS GRATUITEMENT A LA REVUE DE PRESSE "LES Z'ACTUS" ET RECEVEZ CHAQUE JOUR DANS VOTRE BOITE AUX LETTRES LA MEILLEURE INFORMATION DEDIEE AUX WEBMASTERS / DEVELOPPEURS.

Indiquez votre adresse E-mail :

Technologie : ASP 
Date : 29/05/2006   
Auteur : Nicolas Crovatti

Rappel.

Pour commencer un petit rappel d'HTML
Voici les attributs, selon la scpécification du W3 Consortium , pour le tag <TD> (ou <TH>) :

id, class (Identifiant dans le document)
lang (Information sur le language supporté), dir (Direction du texte)
title (élement titre)
style (Information de style dans le tag)
onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (évènements)
bgcolor (Couleur d'arriere plan)
align, char, charoff, valign (Alignement à l'interieur des cellules)

Cela n'est biensûr qu'une partie de la spécification des tableaux HTML; Pour plus d'informations sur ces derniers consultez la spécification complète correspondante sur le site du World Wide Web Consortium.

Nous aurrons besoins d'utiliser plusieurs éléments de la précédente liste dans notre fonction Javascript.
Notament l'attribut id, et les évenments onmouseover() et onmouseout().

La fonction.

Voici la paire de fonctions Javascript apellées dans les évènements intrinsèques du tag <A> :

//--ColorChanger v1.2 Copyright © 2000 Nicolas Crovatti
// -- Start --

// déclaration des variables

var docObj = (document.all) ? "document.all." : "document.";
var OldColor
var OldBorderColor

//On appelle ceci dans l'évènement OnMouseOver()

function chgColor(rowNum,Color) {
thisRow = eval(docObj + rowNum)
OldColor = thisRow.bgColor
OldBorderColor = thisRow.borderColor
thisRow.bgColor = "#" + Color
thisRow.borderColor = "#000000"
}


// On appelle ceci dans l'évènement OnMouseOut()
// pour rétablir les couleurs d'origine.

function RetColor(rowNum) {
thisRow = eval(docObj + rowNum)
thisRow.bgColor = OldColor
thisRow.borderColor = OldBorderColor
}

// -- End --


//Exemple d'appel de la fonction :
//
//<td colspan="5" id="400">
// <a
// OnMouseOver="chgColor(400,'009900')"
// OnMouseOut="RetColor(400)"
// href="#">Un lien
// </a>
//</td>
//

Explications.

Qu'avons-nous ici ?

Nous commencons par la déclaration des variables :

var docObj = (document.all) ? "document.all." : "document.";
var OldColor
var OldBorderColor

Pour l'exemple nous aurons :

.docObj : contenant tous les éléments du document.
.OldColor : contenant la couleur d'origine de la cellule
.OldBorderColor : contenant la couleur d'origine

La première fonction :

function chgColor(rowNum,Color) {
thisRow = eval(docObj + rowNum)
OldColor = thisRow.bgColor
OldBorderColor = thisRow.borderColor
thisRow.bgColor = "#" + Color
thisRow.borderColor = "#000000"
}

Cette fonction a deux paramètres, rowNum et Color qui sont récupérés ici en rouge :

//Exemple d'appel de la fonction :
//
//<td colspan="5" id="400">
// <a
// OnMouseOver="chgColor(400,'009900')"
// OnMouseOut="RetColor(400)"
// href="#">Un lien
// </a>
//</td>
//


Le premier, 'rowNum' représente ici l'identifiant de la cellule a modifier et le second, 'Color' sera la couleur au format que vous voulez.

format acceptés dans le paramètre 'Color':

En Toutes lettres (16 safe colors) :
Black
White
Red
Green

...la suite
En hexadécimal (216 WebSafe color) :
000000 = Black
FFFFFF = White
FF0000 = Red
008000 = Green
...la suite

La fonction identifie l'object en cours (Une <td> qui a pour attribut "ID" : rOwNum)

...
thisRow = eval(docObj + rowNum)
...

Puis elle récupere les couleurs de l'object cellule et les assignent à leurs variables respectives :

...
OldColor = thisRow.bgColor
OldBorderColor = thisRow.borderColor

...
Au final elle applique les nouvelles valeurs de propriétes ("Color") à la cellule en cours et la valeur "noir" ("#00000") à la bordure de cette même cellule:

...
thisRow.bgColor = "#" + Color
thisRow.borderColor = "#000000"

...

Voila, rien de bien sorcier! Nous pouvons même imaginer passer une paramètre"BorColor" et l'assigner a la propriété .bordercolor :O)

Retour aux sources.

Si vous avez suivi jusqu'ici vous pouvez récapituler avec moi :
La souris passe sur un lien ->
la fonction JScript récupère l'"ID" de la cellule
les couleurs d'origine sont enregistrées dans des variables.
la couleur de la cellule ainsi que ca bordure change.

Que nous reste t-il a faire ?
Eh bien restaurer les anciennes propriétés de la cellule.

Restauration

Voici la fonction de restauration des couleurs :

function RetColor(rowNum) {
thisRow = eval(docObj + rowNum)
thisRow.bgColor = OldColor
thisRow.borderColor = OldBorderColor
}

Simple, non ? elle applique juste les couleurs d'origine de la cellule en cours!
Dans la suite nous verrons comment optimiser et automatiser cette fonction en utilisation de l'ASP.

Optimisation.

Pour optimiser et automatiser la fonction nous pouvons utiliser un bout de code ASP / PHP / CGI ou autre pour générer le code des cellules et des liens.

Prenons par exemple un site qui dispose d'un grand nombre de liens dans une base de donnée.

En ASP on pourra exécuter un code de la sorte :

<html>

<head>
<title>Un exemple</title>
<script language="javascript">

var docObj = (document.all) ? "document.all." : "document.";
var OldColor;
var OldBorderColor;

function chgColor(rowNum,Color) {
thisRow = eval(docObj + "Class_" + rowNum)
OldColor = thisRow.bgColor;
OldBorderColor = thisRow.borderColor;
thisRow.bgColor = "#" + Color;
thisRow.borderColor = "#000000";
}
function RetColor(rowNum) {
thisRow = eval(docObj + "Class_" + rowNum);
thisRow.bgColor = OldColor;
thisRow.borderColor = OldBorderColor;
}

</script>
</head>

<body>
<%Dim URL, DESCRIPTIONresponse.write("<table border=1 bordercolor=#FFFFFF>")&vbcrlf
i = 0
Do While Not i=10
DESCRIPTION = (i+1000)*1000
response.write("<tr>")&vbcrlf
response.write("<td id=""Class_"&i&""">")
response.write("<a "&_
"onMouseOver=""chgColor('"&i&"','E7E7E7')""" &_
"onMouseOut=""RetColor('"&i&"')""" &_
"href="&URL&">"&DESCRIPTION&"</a>")
response.write("</tr>")&vbcrlf
response.write("</td>") &vbcrlf
i=i+1
Loop
response.write("</table>")&vbcrlf
%>
</body>
</html>



Project Hoshimi


A RETENIR CETTE SEMAINE
09/09/2010 - Les meilleurs cours et tutoriels MS SQL Server
La page mise à jour qui propose désormais en plus un moteur de recherche ...
09/09/2010 - Microsoft TechDays 2011 - Votre opinion sur notre futur site web !
Comme les TechDays sont avant tout VOTRE événement, j’ai la joie de vous présenter en avant-première ...
08/09/2010 - Trouvez-vous souvent le code des autres mauvais ?
Une développeuse décrit l'évolution de sa perception du travail des autres Sara est une développe ...
08/09/2010 - Versions d'évaluation de Visual Studio 2010 en téléchargement gratuit
Professional, Premium, Ultimate, Test Professional. Chaque version de Microsoft Visual Studio 2010 a ...
08/09/2010 - J'en ai rien à coder 2010 - Tentez de gagner une Xbox 360, Kinect et un jeu !
MSDN vous offre une seconde chance pour tenter de gagner Kinect, une Xbox 360 et un jeu. Participez ...
08/09/2010 - Comment générer automatiquement la carte d’un site Web avec Visio ?
Découvrez comment générer automatiquement la cartographie d’un site Web avec Visio. Lisez l'article ...
07/09/2010 - Internet Explorer 9 - Vivez en direct le lancement de la bêta !
Le 15 septembre à 20h, assistez en direct sur MSDN à l'événement de lancement d'Internet Explorer 9 ...
(c) 1999-2006 ASP MAGAZINE SARL
Partenaires : Codes sources c2i ASP-PHP
Hébergement serveurs dédiés Windows


Hit-Parade