Attention, je ne me suis pas cassé la tête pour vérifier que les valeurs entrées sont bien comprises entre 0 et 255, ni que le code est correct et est converti en majuscules, je vous laisse encore ceci à titre d'exercice.
Et comme je ne suis pas égoïste, voici en exclusivité mondiale, la façon de réaliser ceci en HTML et les scripts qui y sont attachés.
<FORM><TT> | Rouge: <INPUT TYPE="TEXT" NAME="ROUGE" SIZE="3" VALUE="0" onChange="frouge(this)"><BR> | Vert: <INPUT TYPE="TEXT" NAME="VERT" SIZE="3" VALUE="0" onChange="fvert(this)"><BR> | Bleu: <INPUT TYPE="TEXT" NAME="BLEU" SIZE="3" VALUE="0" onChange="fbleu(this)"><BR> | Code: <INPUT TYPE="TEXT" NAME="CODE" SIZE="7" VALUE="#000000" onChange="fcode(this)"> | </TT></FORM> |
Dans l'initialisation rajouter: rr=0; vv=0; bb=0; cd="#000000";, et entre <SCRIPT> et </SCRIPT>:
function frouge(x) {rr=x.value; dechexa(rr,vv,bb); rouge=rr; refresh();}
function fvert(x) {vv=x.value; dechexa(rr,vv,bb); vert=vv; refresh();}
function fbleu(x) {bb=x.value; dechexa(rr,vv,bb); bleu=bb; refresh();}
function fcode(x) {cd=x.value; hexadec(cd); rr=rouge; vv=vert; bb=bleu; refresh();}
function refresh()
{
document.forms[0].ROUGE.value=rouge;
document.forms[0].VERT.value=vert;
document.forms[0].BLEU.value=bleu;
document.forms[0].CODE.value=dechexa(rr,vv,bb);
}
Il devrait maintenant vous être très facile de comprendre comment cela fonctionne.
Quoi ? Vous voulez encore des explications ? Bon, mais je serais bref cette fois, alors voilà:
- Chaque champ du formulaire appelle en cas de changement de contenu une routine qui porte le nom de la couleur ou du code à changer en lui passant "this" qui est le nom de l'objet en question. (le "f" devant le nom, c'est parce que j'ai déjà des variables de nom rouge, vert et bleu et que je veut éviter la confusion).
- Chaque routine change la valeur de la variable de couleur courante, puis dans le cas des 3 couleurs converti ces couleurs en code, et remet ces valeurs en place dans les champs grâce à la routine refresh.
- Dans le cas du changement de code, on place le code dans la variable, on recalcule les trois couleurs et on les place dans les variables, puis on les remet dans les champs grâce à la routine refresh.
J'ai choisi d'utiliser quatre nouvelles variables (rr,vv,bb,cd) pour ne pas interférer avec les routines et pour ne pas avoir à lire tous les champs pour faire le calcul. Il est bien clair que l'initialisation de ces variable doit contenir la même valeur que l'option VALUE="" de chaque champ, on peut ainsi démarrer aussi avec des valeurs non nulles.
Note pour ceux qui veulent faire l'exercice: Pour les trois premiers champs il suffit de tester si il y a un nombre et s'il est compris entre 0 et 255, voir validation de formulaire, par contre pour le code, c'est un peu plus compliqué, il faut tester qu'il y aie bien 7 caractères, que le premier soit "#", que les autres soient des chiffres ou des lettres de "A-F" et les passer en majuscules au besoin, rien de compliqué mais ça demande déjà d'appliquer les règles ci-dessus. Et en voici le corrigé.
|