Aller au contenu

Partie 2 : JavaScript et événements


HTML et CSS produisent des pages statiques : l'utilisateur peut lire le contenu et cliquer sur des liens, mais la page ne réagit pas à ses actions.

JavaScript (souvent abrégé JS) est un langage de programmation qui s'exécute dans le navigateur, côté client. Il permet de :

  • Réagir aux actions de l'utilisateur (clic, saisie, survol...)
  • Modifier le contenu et l'apparence de la page en temps réel
  • Valider un formulaire avant envoi
  • Créer des animations et des effets visuels
<body>
<h1>Ma page</h1>
<script>
alert("Bonjour !");
</script>
</body>

let age = 17; // variable modifiable
const nom = "Alice"; // constante (non modifiable)
let moyenne = 14.5;
let estMajeur = false;
Mot-cléUsage
letVariable dont la valeur peut changer
constConstante, valeur fixée à la déclaration
TypeExempleÉquivalent Python
number42, 3.14int, float
string"Bonjour", 'NSI'str
booleantrue, falseTrue, False
undefinedvariable non initialisée-
nullabsence de valeurNone
// Arithmétique
let somme = 5 + 3; // 8
let reste = 10 % 3; // 1 (modulo)
// Comparaison
5 === 5 // true (égalité stricte, type + valeur)
5 == "5" // true (égalité souple, à éviter)
5 !== 3 // true (différence stricte)
// Logique
true && false // false (ET)
true || false // true (OU)
!true // false (NON)
// Condition
if (age >= 18) {
console.log("Majeur");
} else {
console.log("Mineur");
}
// Boucle for
for (let i = 0; i < 5; i++) {
console.log(i);
}
// Boucle while
let compteur = 0;
while (compteur < 3) {
console.log(compteur);
compteur++;
}

Comparaison Python / JavaScript :

ConceptPythonJavaScript
Bloc de codeIndentationAccolades { }
Fin d'instructionRetour à la lignePoint-virgule ;
Affichageprint()console.log()
ET / OU / NONand, or, not&&, ||, !
function saluer(prenom) {
return "Bonjour " + prenom + " !";
}
let message = saluer("Alice");
console.log(message); // "Bonjour Alice !"

Les fonctions JavaScript se déclarent avec le mot-clé function, suivies du nom, des paramètres entre parenthèses et du corps entre accolades.


Quand le navigateur charge une page HTML, il construit en mémoire une représentation arborescente du document appelée DOM (Document Object Model). Chaque balise HTML devient un nœud de l'arbre.

Pour le code HTML :

<body>
<h1 id="titre">Bonjour</h1>
<p class="texte">Un paragraphe.</p>
</body>

L'arbre DOM correspondant est :

document
└── html
├── head
│ └── ...
└── body
├── h1#titre
│ └── "Bonjour"
└── p.texte
└── "Un paragraphe."

JavaScript permet de sélectionner des éléments du DOM pour les lire ou les modifier :

// Par identifiant (renvoie UN élément)
let titre = document.getElementById("titre");
// Par sélecteur CSS (renvoie le PREMIER élément correspondant)
let para = document.querySelector(".texte");
// Par sélecteur CSS (renvoie TOUS les éléments correspondants)
let tousLesParagraphes = document.querySelectorAll("p");
let titre = document.getElementById("titre");
// Modifier le texte
titre.textContent = "Bienvenue en NSI";
// Modifier le HTML interne
titre.innerHTML = "Bienvenue en <em>NSI</em>";
PropriétéEffet
textContentModifie le texte brut
innerHTMLModifie le contenu HTML
let titre = document.getElementById("titre");
titre.style.color = "blue";
titre.style.fontSize = "32px";
titre.style.backgroundColor = "#f0f0f0";

Plutôt que de modifier le style directement, il est préférable d'ajouter ou retirer des classes CSS :

let element = document.getElementById("boite");
element.classList.add("visible"); // ajouter une classe
element.classList.remove("cache"); // retirer une classe
element.classList.toggle("actif"); // ajouter si absente, retirer si présente

Un événement est une action déclenchée par l'utilisateur (ou le navigateur). Le programme JavaScript peut écouter ces événements et exécuter du code en réponse : c'est la programmation événementielle.

ÉvénementDéclencheur
clickClic gauche sur un élément
dblclickDouble-clic
mouseoverLa souris entre sur l'élément
mouseoutLa souris quitte l'élément
keydownUne touche du clavier est enfoncée
keyupUne touche du clavier est relâchée
inputLe contenu d'un champ de saisie change
changeLa valeur d'un champ est modifiée (après validation)
submitUn formulaire est soumis
loadLa page a fini de charger

Il existe trois méthodes pour associer un gestionnaire d'événements :

<button onclick="alert('Clic !')">Cliquez</button>

Mélange HTML et JavaScript : à éviter.

Quand un événement se produit, JavaScript crée automatiquement un objet événement contenant des informations sur ce qui s'est passé :

document.addEventListener("click", function(e) {
console.log("Type :", e.type); // "click"
console.log("Cible :", e.target); // l'élément cliqué
console.log("Position X :", e.clientX); // position horizontale
console.log("Position Y :", e.clientY); // position verticale
});
PropriétéDescription
e.typeType de l'événement ("click", "keydown"...)
e.targetL'élément qui a déclenché l'événement
e.clientX, e.clientYPosition de la souris
e.keyTouche pressée (pour keydown/keyup)
e.preventDefault()Empêche le comportement par défaut

HTML :

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Couleur au clic</title>
<style>
.boite {
width: 200px;
height: 200px;
background-color: #3498db;
margin: 50px auto;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 18px;
border-radius: 10px;
}
</style>
</head>
<body>
<div id="maBoite" class="boite">Cliquez ici</div>
<script src="couleur.js"></script>
</body>
</html>

JavaScript (couleur.js) :

let boite = document.getElementById("maBoite");
let couleurs = ["#3498db", "#e74c3c", "#2ecc71", "#f39c12", "#9b59b6"];
let index = 0;
boite.addEventListener("click", function() {
index = (index + 1) % couleurs.length;
boite.style.backgroundColor = couleurs[index];
});

À chaque clic sur la boîte, sa couleur de fond change en parcourant le tableau couleurs de manière cyclique grâce à l'opérateur modulo %.


<button id="btnToggle">Afficher/Masquer</button>
<p id="texteCache" style="display: none;">Texte secret !</p>
let btn = document.getElementById("btnToggle");
let texte = document.getElementById("texteCache");
btn.addEventListener("click", function() {
if (texte.style.display === "none") {
texte.style.display = "block";
} else {
texte.style.display = "none";
}
});
<p>Nombre de clics : <span id="compteur">0</span></p>
<button id="btnCompter">+1</button>
<button id="btnReset">Réinitialiser</button>
let compteur = 0;
let affichage = document.getElementById("compteur");
let btnPlus = document.getElementById("btnCompter");
let btnReset = document.getElementById("btnReset");
btnPlus.addEventListener("click", function() {
compteur++;
affichage.textContent = compteur;
});
btnReset.addEventListener("click", function() {
compteur = 0;
affichage.textContent = compteur;
});
document.addEventListener("keydown", function(e) {
console.log("Touche pressée :", e.key);
if (e.key === "Escape") {
alert("Vous avez appuyé sur Échap !");
}
});

  • JavaScript rend les pages Web interactives en s'exécutant côté client (dans le navigateur).
  • Le DOM est la représentation arborescente de la page HTML en mémoire.
  • On accède aux éléments avec document.getElementById(), querySelector(), querySelectorAll().
  • On modifie le contenu avec textContent / innerHTML et le style avec .style ou .classList.
  • Un événement est une action de l'utilisateur (click, keydown, input...).
  • addEventListener("evenement", fonction) est la méthode recommandée pour associer un traitement à un événement.
  • L'objet événement e donne accès à e.target, e.key, e.clientX, e.preventDefault()...