Bonjour,
Voilà mon problème : je souhaite, lorsque l'utilisateur clique sur une cellule d'un tableau, changer la couleur de celle-ci. En fait, à chaque fois qu'il clique, la couleur change dans cet ordre : blanc, vert, orange et rouge (puis de nouveau blanc etc ...).
Voilà comment j'ai codé une cellule du tableau :
<td id="<?php echo $row_RSResultats['id_eleve'].'_'.$row_RSResultats['id_Competence'].'_'.'1'; ?>" align="left" valign="top" style="background:<?php echo Couleur($row_RSResultats['Evaluer1']);?>" onclick="Evaluer(this.style.backgroundColor,this.id);"> </td>
explications :
id : l'id est créé dynamiquement pour que je puisse accéder à chaque cellule
par un document.GetelementbyId.
style : je colorie dès le départ la cellule par une couleur correspondant à la
valeur d'un champ dans une table via une fonction en php (ça marche
très bien). Les valeurs renvoyées sont '#FFFFFF' (blanc), '#00FF00'
(vert), '#FF9933' (orange) ou '#FF0000' (rouge).
onclick : c'est là que ça se complique pour moi, lorsque l'on clique sur la
cellule, la fonction Evaluer doit changer le contenu de la cellule
(juste pour tester) et changer la couleur du fond.
Voici la fonction Evaluer :
function Evaluer(Valeur,id,Cellule) {
document.form1.TCellule.value=Valeur;
switch (Valeur) {
case '#FFFFFF': // si c'est blanc
Cellule.innerHTML='a';
Cellule.style.backgroundColor='#00FF00'; // on passe au vert
break;
case '#00FF00': // si c'est vert
Cellule.innerHTML='e';
Cellule.style.backgroundColor='#FF9933'; // on passe au orange
break;
case '#FF9933': // si c'est orange
Cellule.innerHTML='n';
Cellule.style.backgroundColor='#FF0000'; // on passe au rouge
break;
case '#FF0000': // si c'est rouge
Cellule.innerHTML='r';
Cellule.style.backgroundColor='#FFFFFF'; // on passe au blanc
break;
}
}
La premiere ligne de la fonction affiche dans un 'text field' la valeur de la couleur (pour voir si la couleur est bien envoyée dans le paramètre Valeur) : ça, ça marche. Mais pour le reste, le contenu de la cellule ne change pas ni son fond coloré.
J'ai même essayé avec 'document.GetelementbyId' :
function Evaluer(Valeur,id) {
document.form1.TCellule.value=Valeur;
switch (Valeur) {
case '#FFFFFF':
document.getElementById(id).innerHTML='e';
document.getElementById('id').style.background='#FF9933';
break;
case '#00FF00':
document.getElementById(id').innerHTML='e';
document.getElementById(id).style.background='#FF9933';
break;
case '#FF9933':
document.getElementById(id).innerHTML='n';
document.getElementById(id).style.background='#FF0000';
break;
case '#FF0000':
document.getElementById(id).innerHTML='r';
document.getElementById(id).style.background='#FFFFFF';
break;
}
} avec seulement deux paramètres.
Et lorsque je change directement le contenu de la cellule dans le code de la cellule, ça marche : "... onclick="this.style.backgroundColor='#FF0000';" ..."
Quelqu'un a-t-il une idée ?
Merci,
Denis.
Partager