L'Atelier du Web

Interagir avec la page HTML

Guides prérequis

Lorsque du code JavaScript est intégré à une page, il s’exécute dès que la page est chargée. Or, pour créer de l’interactivité, il faudrait qu’il s’exécute uniquement lorsque les visiteurs effectuent certaines actions. Pour cela, nous pouvons écouter les événements qui se produisent sur les éléments HTML.

Il existe de nombreux événements, comme par exemple le clic, le survol de la souris, l’appui d’une touche du clavier, ou encore le redimensionnement de la fenêtre.

Écouter un événement

Essayons d’afficher un message lors du clic sur un bouton. Il s’agit d’un élément <button> en HTML, auquel on a donné un ID. Dans le code JavaScript, nous pouvons récupérer une référence à cet élément HTML à l’aide de la méthode document.getElementById.

HTML
<button id="super-bouton">Cliquez ici</button>
JS
const myButton = document.getElementById("super-bouton")

Désormais, la variable myButton contient une référence à l’élément <button>. Nous pouvons lui ajouter un écouteur d’événement pour écouter le clic :

JS
myButton.addEventListener("click", buttonClicked)
function buttonClicked() {
console.log("Le bouton a été cliqué !")
}

addEventListener prend deux arguments : le nom de l’événement à écouter et la fonction à exécuter à chaque fois que l’événement se produit.

La fonction buttonClicked a été définie séparément, mais tu pourrais également l’écrire directement dans addEventListener. On appelle cela une fonction anonyme :

JS
myButton.addEventListener("click", () => {
console.log("Le bouton a été cliqué !")
})

un bouton qui affiche un console log “bouton cliqué”

“ajouter au panier” ou “add to cart” en anglais

Onglet verrouillé
Console
  1. Utilise document.getElementById pour cibler le bouton.
  2. Clique sur « Exécuter le code JavaScript ». Il ne va rien se produire visuellement, mais l’écouteur d’événement va être attaché au bouton.
  3. Clique sur le bouton « Ajouter au panier ». Un message devrait s’afficher dans la console !

Modifier la page HTML

HTML
<div id="message">Premier message.</div>
JS
const message = document.getElementById("message")
message.innerHTML = "Nouveau message !"

Pour changer l’apparence d’un élément, tu peux directement utiliser l’attribut style et modifier les propriétés CSS :

JS
const message = document.getElementById("message")
message.style.color = "red"
message.style.fontSize = "30px"

Gare à la casse !

En CSS, les propriétés s’écrivent en minuscules avec des tirets, mais en JavaScript, les mots sont accolés avec une majuscule. C’est pourquoi font-size devient fontSize.

Une méthode plus élégante serait de préparer des règles CSS au préalable, et d’ajouter ou retirer ces classes avec JavaScript. Ainsi, tu peux réutiliser les mêmes classes à plusieurs endroits de ton site.

CSS
.error-message {
color: red;
font-size: 30px;
}
JS
const message = document.getElementById("message")
message.classList.add("error-message")
Onglet verrouillé
Console
  1. Au début du code JavaScript, déclare une variable cartStatus et obtiens une référence au paragraphe grâce à getElementById.
  2. Au clic du bouton, utilise cartStatus.innerHTML pour remplacer le texte du paragraphe par « Ajouté au panier ! ».
  3. L’onglet CSS contient une classe .valid qui peut te permettre de changer la couleur du paragraphe. Toujours dans le clic du bouton, ajoute la classe valid à cartStatus.
  4. Clique sur « Exécuter le code JavaScript » pour attacher le code au bouton, puis essaie de cliquer sur le bouton !

Maintenant que tu sais modifier le contenu d’une page, essayons quelque chose de plus dynamique ! Dans l’exercice suivant, tu vas créer un compteur qui augmente à chaque fois que tu cliques sur le bouton. Tu devras déclarer la variable avec let pour pouvoir mettre à jour sa valeur.

Onglet verrouillé
Console
  1. Au début du code JavaScript, déclare deux variables, counterButton et counterMessage, pour obtenir une référence aux deux éléments HTML.
  2. Avec let, déclare une variable réassignable counter initialisée à 0.
  3. Utilise counterButton.addEventListener… pour écouter le clic sur le bouton.
  4. Lors du clic, incrémente la variable counter de 1.
  5. Change le texte du paragraphe pour afficher « Tu as cliqué X fois », où X est la valeur de counter.
  6. Clique sur « Exécuter le code JavaScript » pour attacher le code au bouton, puis essaie de cliquer sur le bouton !

Au cours de ce guide, tu as écouté l’événement click sur un bouton, mais il existe plein d’autres événements ! Par exemple, tu peux écouter l’événement mouseover pour savoir quand la souris passe au-dessus d’un élément, ou keydown pour savoir quand une touche du clavier est pressée.

Sélectionner des éléments avec querySelector

getElementById est simple à utiliser, mais il nécessite que tu ajoutes un id à chaque élément. Il existe une méthode plus flexible : querySelector, qui utilise la même syntaxe que les sélecteurs CSS :

JS
//
const button = document.querySelector("#super-bouton")
const message = document.querySelector(".message")
const paragraph = document.querySelector("p")

querySelector renvoie le premier élément qui correspond au sélecteur, mais il pourrait y avoir plusieurs éléments correspondants sur la page. Pour tous les récupérer, utilise querySelectorAll, qui renvoie un tableau.

JS
const messages = document.querySelectorAll(".message")
console.log("Contenu du 1er message : " + messages[0].innerHTML)
console.log("Nombre de messages : " + messages.length)
Bonjour ! Je suis un assistant IA qui peut te donner des conseils pour réussir les exercices et améliorer ton code. Utilise le bouton « J'ai besoin d'aide » pour m'appeler !