Chapitre 2 : JavaScript et événements¶
Programme officiel (B.O.)¶
B.O. spécial n° 1 du 22 janvier 2019 - NSI Première
| Contenus | Capacités attendues | Commentaires |
|---|---|---|
| Événements. | Identifier les événements que l'utilisateur peut produire sur une interface graphique et écrire les traitements associés. | On retrouve ici les notions de fonctions et de leur appel. |
| Interaction entre l'homme et la machine. | Analyser et modifier le comportement d'une page Web en associant des événements à des éléments HTML. | L'objectif est de montrer comment JavaScript permet de rendre une page interactive. |
1. Introduction à JavaScript¶
1.1 Pourquoi JavaScript ?¶
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
1.2 JavaScript ≠ Java¶
Attention
Malgré la ressemblance de nom, JavaScript et Java sont deux langages complètement différents. JavaScript a été créé en 1995 par Brendan Eich chez Netscape. C'est un langage interprété, à typage dynamique, alors que Java est compilé et à typage statique.
1.3 Intégrer JavaScript dans une page HTML¶
Bonne pratique
On place la balise <script> juste avant la fermeture de </body> pour que le HTML soit chargé avant l'exécution du script. On peut aussi utiliser l'attribut defer : <script src="script.js" defer></script>.
2. Bases du langage JavaScript¶
2.1 Variables¶
let age = 17; // variable modifiable
const nom = "Alice"; // constante (non modifiable)
let moyenne = 14.5;
let estMajeur = false;
| Mot-clé | Usage |
|---|---|
let |
Variable dont la valeur peut changer |
const |
Constante, valeur fixée à la déclaration |
Attention
Le mot-clé var existe aussi mais est déconseillé car il a un comportement de portée (scope) source d'erreurs. On utilise let et const en JavaScript moderne.
2.2 Types de données¶
| Type | Exemple | Équivalent Python |
|---|---|---|
number |
42, 3.14 |
int, float |
string |
"Bonjour", 'NSI' |
str |
boolean |
true, false |
True, False |
undefined |
variable non initialisée | — |
null |
absence de valeur | None |
2.3 Opérateurs¶
// 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)
Piège fréquent
En JavaScript, toujours utiliser === (égalité stricte) plutôt que == (égalité souple qui convertit les types). Par exemple, 0 == "" vaut true alors que 0 === "" vaut false.
2.4 Structures de contrôle¶
// 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 :
| Concept | Python | JavaScript |
|---|---|---|
| Bloc de code | Indentation | Accolades { } |
| Fin d'instruction | Retour à la ligne | Point-virgule ; |
| Affichage | print() |
console.log() |
| ET / OU / NON | and, or, not |
&&, \|\|, ! |
2.5 Fonctions¶
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.
3. Le DOM (Document Object Model)¶
3.1 Qu'est-ce que le DOM ?¶
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 :
L'arbre DOM correspondant est :
document
└── html
├── head
│ └── ...
└── body
├── h1#titre
│ └── "Bonjour"
└── p.texte
└── "Un paragraphe."
3.2 Accéder aux éléments du DOM¶
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");
3.3 Modifier le contenu¶
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 |
|---|---|
textContent |
Modifie le texte brut |
innerHTML |
Modifie le contenu HTML |
3.4 Modifier le style¶
let titre = document.getElementById("titre");
titre.style.color = "blue";
titre.style.fontSize = "32px";
titre.style.backgroundColor = "#f0f0f0";
Noms de propriétés
En CSS on écrit font-size (avec un tiret), mais en JavaScript on utilise la notation camelCase : fontSize. C'est le cas pour toutes les propriétés CSS à tiret : background-color → backgroundColor, text-align → textAlign, etc.
3.5 Modifier les classes CSS¶
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
4. Les événements¶
4.1 Qu'est-ce qu'un événement ?¶
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.
4.2 Les principaux événements¶
| Événement | Déclencheur |
|---|---|
click |
Clic gauche sur un élément |
dblclick |
Double-clic |
mouseover |
La souris entre sur l'élément |
mouseout |
La souris quitte l'élément |
keydown |
Une touche du clavier est enfoncée |
keyup |
Une touche du clavier est relâchée |
input |
Le contenu d'un champ de saisie change |
change |
La valeur d'un champ est modifiée (après validation) |
submit |
Un formulaire est soumis |
load |
La page a fini de charger |
4.3 Associer un événement à un élément¶
Il existe trois méthodes pour associer un gestionnaire d'événements :
Bonne pratique
La méthode addEventListener est la méthode recommandée. Elle sépare clairement le HTML du JavaScript et permet d'associer plusieurs fonctions au même événement.
4.4 L'objet événement¶
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.type |
Type de l'événement ("click", "keydown"...) |
e.target |
L'élément qui a déclenché l'événement |
e.clientX, e.clientY |
Position de la souris |
e.key |
Touche pressée (pour keydown/keyup) |
e.preventDefault() |
Empêche le comportement par défaut |
4.5 Exemple complet : changer la couleur au clic¶
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 %.
5. Exemples d'interactions courantes¶
5.1 Afficher / masquer un élément¶
<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";
}
});
5.2 Compteur de clics¶
<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;
});
5.3 Réagir au clavier¶
document.addEventListener("keydown", function(e) {
console.log("Touche pressée :", e.key);
if (e.key === "Escape") {
alert("Vous avez appuyé sur Échap !");
}
});
À retenir¶
- 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/innerHTMLet le style avec.styleou.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
edonne accès àe.target,e.key,e.clientX,e.preventDefault()...