Demander et afficher des valeurs

prompt(), alert(), document.write()

Pour afficher les résultats de nos calculs dans la page, nous nous sommes servis jusque là de document.write() (qui écrit dans la page html). On peut également utiliser alert() (qui ouvre une "fenêtre popup" de message).

Pour demander à l'utilisateur d'entrer une donnée, nous nous sommes servis de prompt().

Si ces fonctions sont pratiques pour tester de petits programmes, elles ne sont pas adaptées en général à une page html puisqu'elles en pertubent le flux et l'affichage.

Nous allons voir dans cette page comment procéder plus directement à l'aide d'éléments html du DOM de la page.

Éléments de formulaire

Pour demander d'entrer une donnée (un nombre, un texte) à l'utilisateur, on peut prévoir un élément input dans la page html.

Pour afficher le résultat de l'opération effectuée sur cette donnée, on prévoit également un élément html (par exemple un élément p ou un élément span) et on inscrit le résultat dans cet élément à l'aide de innerHTML ou à l'aide de textContent.

Premier exemple

Dans ce premier exemple, on utilise onchange qui permet de déclencher une fonction lorsque le contenu de l'élément de formulaire input est modifié par l'utilisateur.

Nous rentrerons un peu plus dans le détail de la définition de fonction dans une feuille de cours ultérieure.

Lisez le code ci-dessous et les commentaires. Puis testez. N'hésitez pas à faire quelques modifications pour bien comprendre le rôle de chaque ligne du code.

Le mot clef const est utilisé pour déclarer une variable dont la valeur ne sera pas modifiée après son affectation initiale (il s'agit donc d'une constante). Pour une variable dont la valeur sera modifiée dans le script, on utilise le mot clef let lors de la déclaration.

Il est également possible d'attacher l'événement "change" à l'élément html input dans le script plutôt que dans le code de l'élément input :

Second exemple

Nous reprenons l'exemple 1 en le modifiant un peu.

On a utilisé dans le code précédent innerHTML au lieu de textContent:

  • On utilise textContent lorsqu'on ne cherche qu'à afficher (ou à récupérer) du texte (une chaîne de caractères).
  • On utilise innerHTML lorsqu'on cherche à modifier (ou à récupérer) un contenu d'élément pouvant lui-même contenir d'autres éléments html.

Pour bien comprendre ce qui vient d'être lu sur la différence entre innerHTML et textContent, essayez ci-dessous le même code que précédemment mais avec textContent au lieu de innerHTML:

Troisième exemple

Dans les exemples précédents, nous avons utilisé l'événément change correspondant à une modification du contenu de l'élément input pour déclencher la fonction définie pour l'affichage.

On peut également utiliser d'autres événements. Par exemple, ci-dessous, nous ajoutons un bouton et l'événement déclencheur de la fonction d'affichage sera un clic sur le bouton.

select

On peut vouloir offrir un choix parmi des possibilités fixées à l'avance. Pour cela, on utilisera la balise select.

Les tests du cas présenté peuvent s'abréger en:

Les événements

Nous avons, dans le paragraphe précédent, évoqué deux événements : l'événement click et l'événement change.

Il en existe d'autres dont, par exemple, l'événement mouseover (qui se déclenche lorsque la souris passe sur l'élément html ciblé) que nous illustrons en exercice.

Quelques références pour en savoir plus sur les événements :