Pour entrer des informations, les pages web peuvent proposer des éléments de formulaires : boutons à cliquer, champ d'entrée, etc...
Les informations entrées peuvent ensuite être directement utilisées par la page web grâce à JavaScript ( côté "client" ), ou envoyées au serveur pour un autre traitement ( côté "serveur" ); nous allons voir ces deux cas successivement.
Un formulaire se bâtit dans le fichier HTML de la page : la balise correspondante est la balise <form>
:
<form id="form1" name="mon_formulaire">
................
éléments de formulaires
................
</form>
Il est souvent utile de donner un id et/ou nom à un formulaire :
De nombreux autres éléments de formulaire existent; vous trouverez ici un mémento sur les éléments de formulaires ( et d'autres informations qui vous serviront par la suite ).
A côté de ces éléments de formulaire, il est bien sûr toujours possible d'inclure entre les balises <form>
d'autres éléments HTML "standards" : paragraphe, image, tableau, etc...
Vous allez maintenant utiliser tout ce que vous savez pour faire fonctionner le Simulateur de note au Bac sur lequel vous travaillez; après avoir complété le code HTML, mis en forme avec CSS et abordé les évènements avec JS, vous allez traiter les informations qu'un utilisateur rentrerait dans les éléments du formulaire pour calculer sa note au Bac.
Pour l'instant, pas d'envoi de données au serveur : c'est JavaScript qui, on le rappelle, fonctionne "à l'intérieur" du navigateur, qui fera les calculs : votre page web ne fonctionne donc pour l'instant que "côté client".
Il y a dans la page du Simulateur un formulaire qui va permettre à un utilisateur d'entrer ses différentes notes.
Repérez les différents éléments de ce formulaire, et faites-en sur papier la liste dans l'ordre où ils apparaissent dans le formulaire :
Élément n° | Nom | Type | Information correspondante |
---|---|---|---|
0 | 1t | input ( number ) | bulletin 1er trimestre 1ère |
1 | 2t | input ( number ) | bulletin 2ème trimestre 1ère |
... | ... | ... | ... |
Attention, si il y a deux noms identiques dans votre liste, modifiez les id dans dans le code HTML de façon à ce que ce ne soit plus le cas : cela pourra poser problèmes au chapitre suivant.
Cette liste vous servira dans la suite du travail pour bien vous représenter la structure du formulaire.
Dans le script JS associé à la page du Simulateur, le bouton en bas de la page est (normalement) déjà associé à l'évènement click
, et au gestionnaire d'évènement calcul()
:
c'est donc ce dernier que vous allez compléter pour réaliser la tache de calcul de la note au Bac de l'utilisateur ( vous pouvez d'ailleurs maintenant effacer l'instruction qui affichait une petite fenêtre, ou la mettre en commentaires...)
comme indiqué plus haut, la sélection d'un formulaire par JS se fait grâce à l'id de ce formulaire : on utilisera donc la méthode getElementById()
pour sélectionner le formulaire :
let formulaire = document.getElementById("notes"); // "notes" est l'id du formulaire
De plus, il existe une méthode pour obtenir un tableau de tous les éléments d'un formulaire :
let elmts = formulaire.elements;
Le tableau obtenu s'appelle une collection des éléments HTML : la variable elmts contient donc la collection de tous les éléments du formulaire.<form>
ne sont pas inclus dans cette collection.
value
.
let valeur = elmts[2].value; // la numérotation commence, bien entendu, à zéro...
Attention cependant : vous vous souvenez, en Python, le problème posé par la fonction input()
? Elle retourne toujours une chaîne de caractères : si l'information entrée était en réalité une valeur numérique,
il faut alors transtyper cette valeur en nombre entier ( int()
) ou flottant ( float()
) de façon à pouvoir faire les calculs.
C'est le même problème ici avec la propriété value
: elle correspond elle-aussi toujours à une chaîne de caractères; pour le transtypage en JS, on utilisera les fonctions :
parseInt(.....); // pour un transtypage en entier
parseFloat(.....); // pour un transtypage en flottant
Vous disposez donc d'un moyen de récupérer la valeur entrée dans chacun des champs par l'utilisateur; il va falloir maintenant écrire la formule qui, à partir de toutes ces valeurs, calcule sa note au Bac.
C'est une formule assez complexe car elle fait intervenir de nombreuses valeurs, mais dans le fond, il ne s'agit que du calcul d'une moyenne...
Pour faciliter le travail, nous allons le décomposer en plusieurs étapes :
<span>
correspondante incluse dans le formulaire ( attention, ce n'est pas un élément de formulaire, et n'apparaît donc pas dans le tableau );
pour modifier le texte entre les deux balises d'un élément, il faut :
let elmt = document.getElementById('moy_bull');
innerHTML
:
elmt.innerHTML = mon_texte_a_afficher;
Faites ce travail, enregistrez votre script, rechargez la page et vérifiez le bon fonctionnement du calcul de la moyenne et de son affichage.
Même travail pour les bulletins de Terminale, et l'affichage du résultat au "bon endroit" de la page...
Voila, il faut maintenant calculer la note globale au Bac...ce peut être fastidieux, mais vous avez la possibilité de faire tous les calculs intermédiaires que vous jugerez nécessaire ( moyenne des notes d'E3C en Histoire-Géo en Première par exemple...)
Voila la liste des coefficients associés à chaque note du Bac :
La somme des coefficients est, bien entendu, égale à 100.
Une fois le calcul fait, il faut l'afficher : une balise de type <span>
, placée dans la section "resultat
", est prévue pour cela; l'id de cette balise est "note_finale
".
Écrire dans votre code JS les instructions qui permettent d'afficher dans cette balise la note calculée. Terminé !!...
Et si on décide maintenant que ces informations serait mieux utilisées directement par le serveur, ou alors que l'on souhaite les stocker sur ce serveur ( c'est ce que propose par exemple la page du simulateur cité en exemple dans la première page de ce chapitre ) ? Comment faire cela ?