madamasterclass.com

📔 Évènements

Compréhension et utilisation des évènements en javascript


Dans ce cours, nous allons explorer la gestion des évènements en développement web. Nous verrons comment utiliser HTML, CSS et JavaScript ensemble pour créer des interfaces interactives, comprendre les écouteurs d'évènements, la propagation des évènements, ainsi que les bonnes pratiques pour une programmation évènementielle efficace.

Les évènements sont au cœur de l'interactivité web. Ils permettent aux utilisateurs d'interagir avec les pages web via des clics, saisies, mouvements de souris, etc. La maîtrise de la gestion évènementielle est essentielle pour créer des expériences utilisateur fluides et réactives.

Gestion des évènements web

1. Rappel : La triade HTML/CSS/JavaScript
  • HTML : Structure et contenu de la page
  • CSS : Présentation et styles visuels
  • JavaScript : Comportement et interactivité
📋 Mémo rapide : HTML structure + CSS style + JS comportement = Interface interactive

2. Qu'est-ce qu'un évènement ?
  • ✦ Une action ou occurrence détectée par le navigateur
  • ✦ Déclenché par l'utilisateur ou le système
  • ✦ Permet de réagir aux interactions
Type d'évènement Exemples Déclencheur
Souris click, mouseover, mouseout Utilisateur
Clavier keydown, keyup, keypress Utilisateur
Formulaire submit, focus, blur, change Utilisateur
Système load, resize, scroll Navigateur
3. Les écouteurs d'évènements (Event Listeners)
  • ✦ Fonctions qui "écoutent" et réagissent aux évènements
  • ✦ Méthode moderne et recommandée : addEventListener()
   🎯 Syntaxe de base :
   element.addEventListener('evenement', fonction, options);
   
   Exemple concret :
   <button id="monBouton">Cliquez-moi</button>
   
   // JavaScript
   const bouton = document.getElementById('monBouton');
   bouton.addEventListener('click', function() {
       alert('Bouton cliqué !');
   });
   
   // Ou avec une fonction fléchée
   bouton.addEventListener('click', () => {
       console.log('Clic détecté !');
   });
   
⚡ Avantage : Un même élément peut avoir plusieurs écouteurs pour le même évènement !
4. Méthodes de gestion des évènements
Méthode Exemple Recommandation
HTML inline <button onclick="alert('test')"> ❌ Éviter
Propriété JS btn.onclick = function(){} ⚠️ Limitée
addEventListener btn.addEventListener('click', fn) ✅ Recommandée
5. L'objet Event - Informations précieuses
  • ✦ Automatiquement passé à la fonction de gestion
  • ✦ Contient des informations sur l'évènement
   📝 Propriétés utiles de l'objet Event :
   
   button.addEventListener('click', function(event) {
       console.log('Type:', event.type);           // "click"
       console.log('Target:', event.target);       // élément cliqué
       console.log('Position X:', event.clientX);  // position souris
       console.log('Position Y:', event.clientY);  // position souris
       console.log('Touche Ctrl:', event.ctrlKey); // Ctrl pressée ?
   });
   
   // Pour les évènements clavier
   input.addEventListener('keydown', function(event) {
       console.log('Touche:', event.key);      // "Enter", "a", "Escape"
       console.log('Code:', event.code);       // "KeyA", "Enter"
       if (event.key === 'Enter') {
           console.log('Entrée pressée !');
       }
   });
   
6. Propagation des évènements - Capture et Bubbling
⚠️ Concept important : Les évènements "remontent" dans l'arbre DOM !
   🌊 Phases de propagation :
   
   <div id="parent">
       <button id="enfant">Cliquez</button>
   </div>
   
   1️⃣ CAPTURE : document → parent → enfant
   2️⃣ TARGET : évènement sur l'élément cible
   3️⃣ BUBBLING : enfant → parent → document (par défaut)
   
   // Écouter en phase de capture
   parent.addEventListener('click', handler, true); // 3ème param = true
   
   // Écouter en phase de bubbling (défaut)
   parent.addEventListener('click', handler); // ou false
   
   // Arrêter la propagation
   button.addEventListener('click', function(event) {
       event.stopPropagation(); // Évite la remontée
   });
   
7. Évènements courants et leurs utilisations
Évènement Utilisation Exemple d'usage
click Clic de souris Boutons, liens
mouseover/out Survol souris Tooltips, menus
keydown/up Touches clavier Raccourcis, validation
submit Envoi formulaire Validation, AJAX
load Page chargée Initialisation
resize Taille fenêtre Design responsive
8. Techniques avancées et bonnes pratiques
   🎯 Délégation d'évènements (Event Delegation) :
   
   // Au lieu d'écouter chaque bouton individuellement
   const boutons = document.querySelectorAll('.btn');
   boutons.forEach(btn => btn.addEventListener('click', handler));
   
   // Écoutez sur le parent (plus efficace !)
   document.getElementById('container').addEventListener('click', function(event) {
       if (event.target.classList.contains('btn')) {
           // Traiter le clic sur le bouton
           console.log('Bouton cliqué:', event.target.textContent);
       }
   });
   
   🔄 Supprimer des écouteurs :
   function monHandler() { /* ... */ }
   element.addEventListener('click', monHandler);
   element.removeEventListener('click', monHandler); // Même référence !
   
   ⏱️ Debouncing (éviter trop d'appels) :
   let timeout;
   window.addEventListener('resize', function() {
       clearTimeout(timeout);
       timeout = setTimeout(() => {
           console.log('Redimensionnement terminé');
       }, 250);
   });
   
🚨 Erreurs courantes à éviter :
• Oublier de preventDefault() sur les formulaires
• Créer des fuites mémoire (écouteurs non supprimés)
• Attacher trop d'écouteurs (utiliser la délégation)
9. Exemple pratique complet
   💡 To-Do List interactive :
   
   <!-- HTML -->
   <div id="todoApp">
       <input type="text" id="newTask" placeholder="Nouvelle tâche...">
       <button id="addBtn">Ajouter</button>
       <ul id="taskList"></ul>
   </div>
   
   <!-- JavaScript -->
   <script>
   document.addEventListener('DOMContentLoaded', function() {
       const newTaskInput = document.getElementById('newTask');
       const addBtn = document.getElementById('addBtn');
       const taskList = document.getElementById('taskList');
   
       // Ajouter une tâche
       function addTask() {
           const taskText = newTaskInput.value.trim();
           if (taskText) {
               const li = document.createElement('li');
               li.innerHTML = `${taskText} <button class="delete">×</button>`;
               taskList.appendChild(li);
               newTaskInput.value = '';
           }
       }
   
       // Écouteurs
       addBtn.addEventListener('click', addTask);
       newTaskInput.addEventListener('keypress', function(event) {
           if (event.key === 'Enter') addTask();
       });
   
       // Délégation pour supprimer
       taskList.addEventListener('click', function(event) {
           if (event.target.classList.contains('delete')) {
               event.target.parentElement.remove();
           }
       });
   });
   </script>
   
10. Résumé des points essentiels
💡 Points clés à retenir :
  • 🔸 addEventListener() est la méthode moderne recommandée
  • 🔸 L'objet event contient des informations précieuses
  • 🔸 Les évènements "remontent" dans le DOM (bubbling)
  • 🔸 La délégation d'évènements améliore les performances
  • 🔸 Toujours nettoyer les écouteurs pour éviter les fuites mémoire
  • 🔸 Utiliser preventDefault() pour contrôler le comportement par défaut
11. Conclusion

La gestion des évènements est fondamentale en développement web moderne. Elle permet de créer des interfaces riches et interactives qui réagissent aux actions des utilisateurs. Maîtriser les écouteurs d'évènements, comprendre la propagation et appliquer les bonnes pratiques comme la délégation vous permettra de développer des applications web performantes et maintenables. L'évènementiel est la clé d'une expérience utilisateur fluide et engageante.

Application des Concepts d'Évènements en JavaScript

Exercice 1: Écouteurs d'évènements basiques ★ ★ ☆ ☆ ☆

Objectif pédagogique : Maîtriser l'ajout d'écouteurs d'évènements avec addEventListener() et comprendre les évènements de base.

Énoncé :
1. Créez un bouton HTML avec l'id "monBouton" et ajoutez un écouteur qui affiche "Hello World!" dans la console au clic.
Conseil : Utilisez addEventListener() plutôt que onclick.

2. Ajoutez un second écouteur sur le même bouton qui change la couleur du texte en rouge. Astuce : Un élément peut avoir plusieurs écouteurs pour le même évènement.

Correction détaillée :

Question 1 :
HTML :
<button id="monBouton">Cliquez-moi</button>

JavaScript :
const bouton = document.getElementById('monBouton');
bouton.addEventListener('click', function() {
    console.log('Hello World!');
});


Question 2 :
bouton.addEventListener('click', function() {
    bouton.style.color = 'red';
});


Résultat : Au clic, les deux fonctions s'exécutent (console + couleur)


Exercice 2: Gestion de l'objet Event ★ ★ ★ ☆ ☆

Objectif pédagogique : Utiliser les propriétés de l'objet Event pour récupérer des informations sur l'évènement.

Énoncé :
1. Créez un div de 200x200px avec un fond bleu. Ajoutez un écouteur de clic qui affiche les coordonnées X et Y de la souris.
Rappel : Utilisez event.clientX et event.clientY.

2. Ajoutez un écouteur sur un input text qui détecte quand l'utilisateur presse la touche "Enter" et affiche le contenu. Procédure : Écoutez 'keydown' et vérifiez event.key === 'Enter'

Étapes pas à pas :

Question 1 :
HTML :
<div id="zone" style="width:200px; height:200px; background:blue;"></div>

JavaScript :
const zone = document.getElementById('zone');
zone.addEventListener('click', function(event) {
    console.log('X:', event.clientX, 'Y:', event.clientY);
});


Question 2 :
HTML :
<input type="text" id="monInput" placeholder="Tapez et appuyez sur Entrée">

JavaScript :
const input = document.getElementById('monInput');
input.addEventListener('keydown', function(event) {
    if (event.key === 'Enter') {
        console.log('Contenu:', event.target.value);
    }
});


Exercice 3: Propagation et délégation d'évènements ★ ★ ★ ★ ☆

Objectif pédagogique : Comprendre la propagation des évènements et utiliser la délégation pour optimiser les performances.

Énoncé :
Créez une liste <ul> avec 3 éléments <li> contenant chacun un bouton "Supprimer" :
1. Utilisez la délégation d'évènements pour gérer tous les clics depuis le <ul>
2. Supprimez l'élément <li> correspondant quand on clique sur "Supprimer"

Attention : Utilisez event.target pour identifier l'élément cliqué et event.stopPropagation() si nécessaire.
Solution complète :

HTML :
<ul id="maListe">
    <li>Élément 1 <button class="supprimer">Supprimer</button></li>
    <li>Élément 2 <button class="supprimer">Supprimer</button></li>
    <li>Élément 3 <button class="supprimer">Supprimer</button></li>
</ul>


JavaScript avec délégation :
const liste = document.getElementById('maListe');
liste.addEventListener('click', function(event) {
    if (event.target.classList.contains('supprimer')) {
        event.target.parentElement.remove();
        // Optionnel : event.stopPropagation();
    }
});


Avantages :
• Un seul écouteur pour tous les boutons
• Fonctionne même pour les éléments ajoutés dynamiquement
• Meilleure performance avec de nombreux éléments


Exercice 4: Gestion de formulaire avancée ★ ★ ★ ★ ★

Objectif pédagogique : Maîtriser la gestion des formulaires avec validation en temps réel et preventDefault().

Énoncé :
1. Créez un formulaire avec email et mot de passe. Validez l'email en temps réel (format valide).
2. Empêchez la soumission si les champs sont invalides et affichez des messages d'erreur.

Méthode : Utilisez les évènements 'input' pour la validation temps réel et 'submit' pour la validation finale.
Analyse approfondie :

HTML :
<form id="monForm">
    <input type="email" id="email" placeholder="Email" required>
    <span id="emailError" style="color:red;"></span>
    <input type="password" id="motdepasse" placeholder="Mot de passe" required>
    <span id="passwordError" style="color:red;"></span>
    <button type="submit">Valider</button>
</form>


JavaScript :
const form = document.getElementById('monForm');
const email = document.getElementById('email');
const password = document.getElementById('motdepasse');

// Validation temps réel email
email.addEventListener('input', function() {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    const errorSpan = document.getElementById('emailError');
    if (!emailRegex.test(email.value)) {
        errorSpan.textContent = 'Format email invalide';
    } else {
        errorSpan.textContent = '';
    }
});

// Validation soumission
form.addEventListener('submit', function(event) {
    if (email.value === '' || password.value.length < 6) {
        event.preventDefault();
        alert('Veuillez corriger les erreurs');
    }
});


Exercice 5: Application interactive complète ★ ★ ★ ★ ★

Objectif pédagogique : Combiner plusieurs types d'évènements pour créer une application interactive avec drag & drop.

Énoncé :
Créez un système de glisser-déposer simple :
1. Une div "source" draggable et une div "cible" où déposer
2. Gérez les évènements dragstart, dragover, et drop pour permettre le déplacement

Rappel : • Utilisez draggable="true" en HTML
• preventDefault() est crucial pour dragover et drop
• dataTransfer permet de passer des données
Explications :

HTML :
<div id="source" draggable="true" style="width:100px; height:100px; background:blue; margin:10px;">
    Glissez-moi
</div>
<div id="cible" style="width:200px; height:200px; border:2px dashed #ccc; margin:10px;">
    Zone de dépôt
</div>


JavaScript :
const source = document.getElementById('source');
const cible = document.getElementById('cible');

// Début du glisser
source.addEventListener('dragstart', function(event) {
    event.dataTransfer.setData('text/plain', 'element-deplace');
});

// Survol de la zone cible
cible.addEventListener('dragover', function(event) {
    event.preventDefault(); // Permettre le dépôt
    cible.style.backgroundColor = '#f0f0f0';
});

// Dépôt dans la cible
cible.addEventListener('drop', function(event) {
    event.preventDefault();
    cible.appendChild(source);
    cible.style.backgroundColor = '';
});


Résultat : L'élément source peut être glissé dans la zone cible et y reste


Application des Concepts d'Évènements en JavaScript - Partie 2

Exercice 1: Changement de style interactif ★ ★ ☆ ☆ ☆

Objectif pédagogique : Manipuler les styles CSS via les événements et comprendre mouseover/mouseout.

Énoncé :
1. Créez un carré de 150x150px avec un fond vert. Faites-le passer en rouge au survol de la souris.
Conseil : Utilisez les événements mouseover et mouseout.

2. Ajoutez un effet supplémentaire : le carré doit s'agrandir à 200x200px pendant le survol. Astuce : Modifiez la propriété width et height dans l'événement.

Correction détaillée :

Question 1 :
HTML :
<div id="monCarre" style="width:150px; height:150px; background:green;"></div>

JavaScript :
const carre = document.getElementById('monCarre');
carre.addEventListener('mouseover', function() {
    carre.style.backgroundColor = 'red';
});
carre.addEventListener('mouseout', function() {
    carre.style.backgroundColor = 'green';
});


Question 2 :
carre.addEventListener('mouseover', function() {
    carre.style.width = '200px';
    carre.style.height = '200px';
});
carre.addEventListener('mouseout', function() {
    carre.style.width = '150px';
    carre.style.height = '150px';
});


Exercice 2: Compteur interactif ★ ★ ★ ☆ ☆

Objectif pédagogique : Créer une interface interactive avec mise à jour dynamique.

Énoncé :
1. Créez un compteur avec un bouton "+" et un bouton "-" qui incrémente/décrémente une valeur affichée.
Rappel : La valeur initiale est 0 et doit être stockée dans une variable.

2. Ajoutez un bouton "Reset" qui remet le compteur à 0. Procédure : Utilisez textContent pour mettre à jour l'affichage.

Étapes pas à pas :

HTML :
<div id="compteur">0</div>
<button id="incrementer">+</button>
<button id="decrementer">-</button>
<button id="reset">Reset</button>


JavaScript :
let count = 0;
const affichage = document.getElementById('compteur');
const plusBtn = document.getElementById('incrementer');
const moinsBtn = document.getElementById('decrementer');
const resetBtn = document.getElementById('reset');

plusBtn.addEventListener('click', function() {
    count++;
    affichage.textContent = count;
});

moinsBtn.addEventListener('click', function() {
    count--;
    affichage.textContent = count;
});

resetBtn.addEventListener('click', function() {
    count = 0;
    affichage.textContent = count;
});


Exercice 3: Galerie d'images interactive ★ ★ ★ ★ ☆

Objectif pédagogique : Gérer des événements complexes sur plusieurs éléments avec gestion dynamique du DOM.

Énoncé :
Créez une galerie avec 3 miniatures d'images et une zone d'affichage principale :
1. Au clic sur une miniature, l'image principale doit changer pour afficher la version agrandie
2. Ajoutez un effet visuel (bordure colorée) sur la miniature sélectionnée

Attention : Utilisez event.target pour identifier l'image cliquée et dataset pour stocker le chemin de l'image agrandie.
Solution complète :

HTML :
<div id="imagePrincipale">
    <img src="image1-grande.jpg" id="mainImage" style="width:400px;">
</div>
<div class="miniatures">
    <img src="image1-petite.jpg" data-grande="image1-grande.jpg" class="miniature">
    <img src="image2-petite.jpg" data-grande="image2-grande.jpg" class="miniature">
    <img src="image3-petite.jpg" data-grande="image3-grande.jpg" class="miniature">
</div>


JavaScript :
const miniatures = document.querySelectorAll('.miniature');
const mainImage = document.getElementById('mainImage');

miniatures.forEach(mini => {
    mini.addEventListener('click', function() {
        // Changer l'image principale
        mainImage.src = this.dataset.grande;
        // Retirer la bordure de toutes les miniatures
        miniatures.forEach(m => m.style.border = 'none');
        // Ajouter bordure à la miniature sélectionnée
        this.style.border = '3px solid blue';
    });
});


Exercice 4: Système de notation dynamique ★ ★ ★ ★ ★

Objectif pédagogique : Créer un système interactif complexe avec gestion d'état et feedback visuel.

Énoncé :
1. Créez 5 étoiles vides qui se remplissent au survol de la souris (jusqu'à l'étoile survolée)
2. Au clic, sauvegardez la note sélectionnée et affichez-la sous forme textuelle ("3/5")

Méthode : Utilisez les événements mouseover, mouseout et click. Stockez la note sélectionnée dans une variable.
Analyse approfondie :

HTML :
<div class="etoiles">
    <span class="etoile" data-valeur="1">☆</span>
    <span class="etoile" data-valeur="2">☆</span>
    <span class="etoile" data-valeur="3">☆</span>
    <span class="etoile" data-valeur="4">☆</span>
    <span class="etoile" data-valeur="5">☆</span>
</div>
<div id="noteAffichee"></div>


JavaScript :
const etoiles = document.querySelectorAll('.etoile');
const noteAffichee = document.getElementById('noteAffichee');
let noteSelectionnee = 0;

etoiles.forEach(etoile => {
    // Survol d'une étoile
    etoile.addEventListener('mouseover', function() {
        const valeur = parseInt(this.dataset.valeur);
        remplirEtoiles(valeur);
    });

    // Clic sur une étoile
    etoile.addEventListener('click', function() {
        noteSelectionnee = parseInt(this.dataset.valeur);
        noteAffichee.textContent = `${noteSelectionnee}/5`;
    });
});

// Retour à la note sélectionnée quand la souris quitte
document.querySelector('.etoiles').addEventListener('mouseout', function() {
    remplirEtoiles(noteSelectionnee);
});

function remplirEtoiles(nombre) {
    etoiles.forEach((etoile, index) => {
        etoile.textContent = index < nombre ? '★' : '☆';
    });
}


Exercice 5: Canvas interactif ★ ★ ★ ★ ★

Objectif pédagogique : Créer une application de dessin simple avec gestion des événements de souris.

Énoncé :
Créez une zone de dessin avec Canvas :
1. Dessinez un trait qui suit le mouvement de la souris quand le bouton est enfoncé
2. Ajoutez un sélecteur de couleur pour changer la couleur du trait

Rappel : • Utilisez mousedown, mousemove et mouseup
• Gardez trace de l'état "dessin en cours" avec une variable booléenne
• Les coordonnées dans canvas sont différentes de celles de la page
Explications :

HTML :
<canvas id="monCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>
<input type="color" id="couleurPinceau" value="#000000">


JavaScript :
const canvas = document.getElementById('monCanvas');
const ctx = canvas.getContext('2d');
const couleurInput = document.getElementById('couleurPinceau');
let isDrawing = false;
let lastX = 0;
let lastY = 0;

// Démarrer le dessin
canvas.addEventListener('mousedown', (e) => {
    isDrawing = true;
    [lastX, lastY] = [e.offsetX, e.offsetY];
});

// Dessiner
canvas.addEventListener('mousemove', (e) => {
    if (!isDrawing) return;
    ctx.beginPath();
    ctx.moveTo(lastX, lastY);
    ctx.lineTo(e.offsetX, e.offsetY);
    ctx.strokeStyle = couleurInput.value;
    ctx.lineWidth = 3;
    ctx.stroke();
    [lastX, lastY] = [e.offsetX, e.offsetY];
});

// Arrêter le dessin
canvas.addEventListener('mouseup', () => isDrawing = false);
canvas.addEventListener('mouseout', () => isDrawing = false);


Résultat : Une application de dessin simple où vous pouvez dessiner avec la souris et changer la couleur


Mémento HTML • CSS • JS

Guide de référence avec focus sur les événements JavaScript

🏗️ HTML

Structure de base

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <title>Titre</title>
</head>
<body>
  Contenu
</body>
</html>

Balises essentielles

<h1> à <h6> - Titres
<p> - Paragraphe
<div> - Conteneur bloc
<span> - Conteneur inline
<a href=""> - Lien
<img src=""> - Image
<ul><li> - Liste non ordonnée
<ol><li> - Liste ordonnée
<table><tr><td> - Tableau

Formulaires

<form>
  <input type="text">
  <input type="email">
  <input type="password">
  <textarea></textarea>
  <select><option></select>
  <button type="submit">
</form>

🎨 CSS

Sélecteurs

element - Balise
.class - Classe
#id - Identifiant
* - Universel
parent child - Descendant
parent > child - Enfant direct
element:hover - Pseudo-classe
element::before - Pseudo-élément

Propriétés courantes

color, background-color
font-family, font-size
margin, padding
width, height
display: block|inline|flex
position: static|relative|absolute
border, border-radius
text-align, vertical-align

Flexbox

display: flex;
flex-direction: row|column;
justify-content: center|space-between;
align-items: center|stretch;
flex-wrap: wrap|nowrap;
flex: 1; /* sur les enfants */

JavaScript

Variables & Types

let nom = "texte";
const age = 25;
var ancien = true;

Types: string, number, boolean,
object, array, null, undefined

DOM

document.getElementById("id")
document.querySelector(".class")
element.innerHTML = "contenu"
element.style.color = "red"
element.classList.add("classe")

Fonctions

function nom() { }
const nom = () => { }
function nom(param) {
  return param * 2;
}

🎯 Événements JavaScript

Événements de base

🖱️ Souris

element.onclick = function() { }
element.onmouseover = function() { }
element.onmouseout = function() { }
element.onmousedown = function() { }
element.onmouseup = function() { }
element.ondblclick = function() { }

⌨️ Clavier

element.onkeydown = function(e) { }
element.onkeyup = function(e) { }
element.onkeypress = function(e) { }

// Récupérer la touche
console.log(e.key);
console.log(e.keyCode);

📄 Page & Formulaire

window.onload = function() { }
form.onsubmit = function(e) { }
input.onchange = function() { }
input.oninput = function() { }
input.onfocus = function() { }
input.onblur = function() { }

addEventListener (moderne)

📚 Syntaxe

element.addEventListener('event', function)

// Exemple
button.addEventListener('click', function() {
  alert('Cliqué!');
});

// Avec fonction fléchée
button.addEventListener('click', () => {
  console.log('Cliqué!');
});

🔧 Options avancées

// Supprimer un événement
element.removeEventListener('click', fonction);

// Options
element.addEventListener('click', handler, {
  once: true, // Une seule fois
  passive: true // Pas de preventDefault
});

🎯 Objet Event

element.addEventListener('click', function(e) {
  e.preventDefault(); // Empêcher l'action par défaut
  e.stopPropagation(); // Arrêter la propagation
  console.log(e.target); // Élément cliqué
  console.log(e.type); // Type d'événement
});

💡 Exemples pratiques

Changer la couleur

const btn = document.querySelector('#btn');

btn.addEventListener('click', () => {
  document.body.style.backgroundColor = 'red';
});

Validation formulaire

const form = document.querySelector('#form');

form.addEventListener('submit', (e) => {
  e.preventDefault();
  // Validation ici
});

Détecter une touche

document.addEventListener('keydown', (e) => {
  if (e.key === 'Enter') {
    console.log('Entrée pressée!');
  }
});

🚀 Mémento de développement web - HTML, CSS & JavaScript

Gardez ce guide à portée de main pour vos projets !

Forum(s) associé(s)

L'Art de la Philosophie : Interprétations et Débats

08 Apr, 2016

Explorez comment l'art et la philosophie s'entrelacent pour questionner notre perception de la réalité et de l'esthétique.

Read more.

Voyage à Travers la Liberté : Concepts et Dilemmes

27 Jan, 2014

Plongez dans les débats philosophiques sur la liberté, ses implications éthiques et les défis contemporains qui l'entourent.

Read more.

La Quête de la Vérité : Philosophies et Perspectives

30 Feb, 2015

Découvrez les différentes approches philosophiques de la vérité et comment elles influencent notre compréhension du monde.

Read more.
Page: