IB CEGOS Défense · Formation
distancielle

Formation

Javascript - Les fondamentaux

3 jours21 h9 chapitres
const subject = "JavaScript fondamentaux"

IB Cegos, avec Glodie Tshimini Novembre 2026

Ce support de cours est protégé par le droit d'auteur.

Toute reproduction, représentation, diffusion ou rediffusion, totale ou partielle, sur quelque support que ce soit, est strictement interdite sans l'accord express de l'auteur.

© Glodie Tshimini, 2026 - Tous droits réservés.

Programme

Ce que nous allons couvrir

01

Introduction

  • JavaScript pour quoi faire ?
  • L'environnement du client Web
  • Le navigateur
  • Le modèle client / serveur
  • Les outils
  • Insérer un script dans un document HTML/XHTML
02

JavaScript : le coeur du langage

  • La syntaxe
  • Les variables et les constantes
  • Les fonctions globales : afficher des informations (console, alert) et interroger l'utilisateur (prompt)
  • Les opérateurs
  • Les structures de contrôle
  • Les fonctions : définition, arguments, fonctions littérales, fonctions sous forme de données
  • Les objets personnalisés : constructeur, méthodes et propriétés, prototype, objets littéraux, objets sous forme de tableaux associatifs
  • Les objets globaux : Array, Date, Math, RegExp, String... Manipuler les tableaux, les dates, les chaînes de caractères
03

Les objets du navigateur

  • La hiérarchie des objets
  • Les principaux objets : window, document, location, screen, navigatior, form... Leurs propriétés et méthodes
  • Manipuler des fenêtres
  • Gérer des timers
04

Le DOM

  • Introduction au XML, XHTML et HTML
  • Le DOM et les navigateurs
  • Sélectionner des éléments : API Selector Lvl 1 et 2
  • Manipuler des éléments : créer et insérer de nouveaux éléments, modifier les attributs d'un élément, modifier le contenu
Suite Programme

La suite de ce que nous allons couvrir

05

La gestion des évènements

  • Le gestionnaire d'évènements
  • Modèle DOM
  • L'objet Event
  • La propagation des évènements
  • Compatibilité avec les différents navigateurs
06

Les formulaires

  • Les différents éléments d'un formulaire
  • Vérifier les données saisies dans les différents champs
  • Soumettre un formulaire
07

Les styles CSS

  • Rappel sur les styles CSS
  • Manipuler les styles CSS
  • Modifier une propriété de style d'un élément
  • Modifier la classe d'un élément
  • Modifier l'aspect d'un élément
  • Déplacer, afficher, masquer, réduire un élément
08

Requêtes avec un serveur

  • Présentation et historique d'Ajax
  • ActiveX
  • XMLhttpRequest
  • Fetch
09

Introduction à JQuery

  • Présentation de la librairie
  • Manipulation du DOM (sélection, création, modification, suppression de noeuds)
  • Gestion des événements
  • Création d'effets / animation
  • Modification des styles
  • "Unobstrusive JavaScript" avec jQuery
Chapitre 01

Introduction

6 notions
Avant de commencer

Quelles sont vos connaissances sur JavaScript ?

Chapitre 01 · Introduction
JavaScript.pourQuoiFaire()

JavaScript pour quoi faire ?

Comprendre 1 / 6
  • Créé en 1995 par Brendan Eich (Netscape) pour rendre les pages web dynamique en modifiant directement la structure, le contenu et la présentation de celles-ci
  • Langage de programmation interprété (lu, traduit et exécuté ligne par ligne en temps réel)
  • Standardisé par les normes ECMASCript (European Computer Manufacturers Association) depuis 1997
  • Faiblement typé
  • Le typage est dynamique au runtime (exécution)
  • Case sensitive (sensible aux majuscules et miniscules) : maVariable est différent de MaVariable
  • A ne pas confondre avec Java qui est un autre langage de programmation complètement différent
  • Langage polyvalent à la fois
    • Pour un usage côté client (Navigateur)
    • Et serveur avec les environnements de développement NodeJS, Deno et Bun
  • Exemples d'utilisation de JavaScript
    • Ajouter des interactions dans les pages
    • Réagir aux actions des utilisateurs
    • Communiquer avec des serveurs distants
    • Manipuler les éléments du document HTML (balises et propriétés CSS)
    • Gérer les formulaires de contact (validation)
    • Manipuler la fenêtre (window)
    • Utiliser la géolocation, le cache, le stockage côté client, dessiner, etc.
    • Exploiter le matériel (caméra, connexion réseau, etc.) d'un smartphone pour transformer les pages web en application mobile moderne
    • Créer des serveurs, des applications mobiles, des logiciels à travers son écosytème très riche
    • Gestion de l'onglet (dimension, ouverture, fermeture, etc.)
    • Etc.
Chapitre 01 · Introduction
Environnement.clientWeb()

L'environnement du client Web

Comprendre 2 / 6
  • Exécuté et interprété par le navigateur web
  • à disposition des API HTML5 (fonctionnalités pour faire communiquer les applications)
    • Géolocalisation
    • Storage (stockage côté navigateur)
    • Canvas (dessin)
    • Drag & Drop (glisser, déposer)
    • Offline (gestion du hors ligne)
    • Web Workers et cache(communication et optimisation des ressources)
    • Etc.
JS Object
Chapitre 01 · Introduction
Navigateur.toString()

Le navigateur

Comprendre 3 / 6
  • Une page web est un document constitué du HTML (la structure), CSS (esthétisme) et JavaScript (interactions)
    • Le navigateur analyse et interprète le HTML et le CSS par l'intermédiaire de son moteur de rendu (Blink, Gecko, Webkit) pour afficher la page
    • Un moteur nommé V8 chez Chrome/Edge et SpiderMonkey chez Firefox compile et exécute le JS
  • Le navigateur embarque la DevTools (outils de débogage ou de développement) à ouvrir à partir du clic droit + inspecter ou sur Windows/Linux avec la touche F12 ou CTRL + Shift + C et sur MacOs avec CTRL + CMD + C
    • Inspecteur pour visualiser la structure HTML de la page web
    • Console pour voir les messages provenant du code, globalement dans l'objectif de deboguer en affichant des messages d'information ou d'erreurs lors de l'exécution du script
    • Débugger pour mettre des points d'arrêt pour mettre pause et observer le comportement de l'application pas-à-pas
    • Réseaux pour explorer toutes les requêtes HTTP effectuées par le navigateur et la page web
    • Stockage pour voir les informations stockées par le navigateur (cookie, storage, indexDB, etc)
    • Etc.
Chapitre 01 · Introduction
Modele.clientServeur()

Le modèle client / serveur

Comprendre 4 / 6
  • Répose sur le protocole HTTP (HyperText Transfer Protocol), langage de communication entre 2 machines sur le web
  • Le HTTP définie les règles de communication entre 2 machines à travers le réseau local ou Internet
  • Le client (couramment le navigateur) demande une ressource à travers une requête HTTP au serveur (en locale ou distante)
  • Le serveur traite la requête et renvoie la réponse correspondante
  • Pour simplifier une requête ou une réponse HTTP est constitué d'une en-tête (headers) contenant des meta-données sur les versions, les autorisations, le code HTTP (200, 201, 404, 500, etc.)etc.., d'un corps contenant les données à transmettre
  • Une ressource est un document HTML, CSS, une image, un PDF, un script, du JSON, du texte, etc.
schema client/server
Source image Numérique et sciences informatiques
Chapitre 01 · Introduction
Outils.list()

Les outils

Comprendre 5 / 6
  1. Un éditeur de code pour la rédaction du code, par exemple VSCode
  2. Un navigateur web (Chrome, Edge, Firefox, etc.) pour l'interprétation du code et l'affichage
  3. L'environnement de développement Node.js qui embarque NPM (Node Package Manager) pour les tâches nécessitant un serveur web
Chapitre 01 · Introduction

Installations

Chapitre 01 · Introduction
InsererScriptDocumentDans.htmlEtXhtml()

Insérer un script dans un document HTML/XHTML

Comprendre 6 / 6
💡 À retenir : ajouter les balises scripts JavaScript juste avant la fermeture de la balise <body/> !

La balise <script> permet d'insérer le JavaScript dans un document HTML

Le script Javascript peut être interne entre les balises script directement dans le document HTML ou externe délocalisé dans un fichier externe au document HTML

  • Pour le script interne, le code JS se trouve entre les balises <script></script>
  • Pour le script externe, l'attribut src de celle-ci permet de préciser le chemin (relatif à partir du HTML) pour charger le fichier JS

Dans le HTML, Où placer les scripts JavaScript ?

  1. Entre les balises <head></head> pour une exécution immédiate après son chargement
  2. Entre les balises <head></head> avec l'attribut defer pour une exécution différée après le chargement intégral document HTML
  3. Entre les balises <body></body> pour une exécution immédiate après son chargement
  4. Juste avant la fermeture de la balise </body> pour une exécution immédiate après le chargement intégral du corps du HTML

Il y a plusieurs choix de placement car il y a plusieurs usages du JS, par exemple :

  • Pour la manipulation du DOM, la 2 et la 4 sont plus sûres et évitent d'avoir des erreurs car les éléments HTML ne sont pas encore chargés
  • Pour le traçage (analyse des comportements et d'identication du client) ou les scripts externes ne manipulant pas le DOM, toutes sont candidates mais l'option 1 est la plus adaptée
Atelier

Atelier 1.1

Introduction
Correction atelier

Correction Atelier 1.1

Introduction
Chapitre 02

JavaScript : le coeur du langage

8 notions
Avant de commencer

Quelles sont vos connaissances sur les bases du langage JavaScript ?

Chapitre 02 · JavaScript : le coeur du langage
Syntaxe.toString()

La Syntaxe

Comprendre 1 / 8
  • JS est sensible à la casse (distinction entre les majuscules et minuscules)
  • Une instruction est l'ordre donné au programme pour être exécutée sur le processeur de la machine hôte
  • En programmation, généralement, une instruction se termine par un point-virgule sauf en JS, le point-virgule à la fin n'est pas obligatoire
  • Les blocs sont délimités par des accolades {} pour l'utilisation des conditions, boucles et fonctions
  • Le commentaire est une instruction qui n'est pas évaluée (exécutée), sert généralement de documentation dans le code
    • // commentaire sur une ligne
    • /**
      * commentaire
      * sur
      * plusieurs
      * lignes
      */
Chapitre 02 · JavaScript : le coeur du langage
VariablesEtConstantes.toString()

Variables et constantes

Comprendre 2 / 8
💡 À retenir : éviter d'utiliser var qui atteint ses limites dans une programmation moderne faisant appel à plusieurs scripts externes

La portée (scope) définit l'accessibilité d'une variable en dehors du bloc où elle a été déclarée.

Il y a 3 scopes :

  1. Global scope : le bloc de plus haut niveau
  2. Function scope : le bloc qui définit une fonction
  3. Block scope : blocs de condition, boucles
var let const
Global scope Oui Non Non
Function Scope Oui Oui Oui
Bloc Scope Non Oui Oui
Portée Fonction Bloc Bloc
Fonctionnement Hoisting (remonte en haut de la fonction en ignorant les blocs (if, for)) Restreint au bloc {} le plus proche Identique à let
Variable Accessible en dehors du bloc dans laquelle elle a été déclarée Accessible uniquement dans le bloc ou elle a été défini (n'existe pas en dehors) Identique à let
Immutabilité valeur Référence et valeur Référence, pas de la valeur.
Réaffection Oui Oui Non
Redéclaration Oui Non Non
Doc. sur let et les scopes Doc. sur var et les scopes
Chapitre 02 · JavaScript : le coeur du langage
VariablesEtConstantes.toString()

Variables et constantes

Faire 2 / 8

//@see source https://dasha.ai/blog/javascript-scope-and-scope-chain
// Global variable
const userName = "Peter";
// Outer function
function calcAge(birthyear) {
  const currentYear = 2026;
  const age = currentYear - birthyear;
   // inner block
  if (age <= 60) {
    var working = true;
    const message = `Peter is still employed!`;
    console.log(message);
  }
  // inner function
  function yearsToRetire() {
    const retirement = 60 - age;
    console.log(`${userName} will be retired in ${retirement} years!`);
  }
  yearsToRetire();
}
calcAge(1975);  
              
Scopes
Source image dasha
Chapitre 02 · JavaScript : le coeur du langage
FonctionsGlobales.list()

Les fonctions globales: afficher des informations (console, alert) et interroger l'utilisateur (prompt)

Comprendre 3 / 8

console, alert() et prompt() sont des propriétés ou méthodes de l'objet document qui représente le document HTML

console alert() prompt() confirm()
Caractéristique Objet ayant les méthodes .log(), .info(), .dir(), .error(), etc. Méthode Méthode Méthode
Usage Principalement utilisé pour le débogage du code JS
On peut voir le contenu de la console sur Windows/Linux avec la touche F12 ou CTRL + Shift + C et MacOs avec CTRL + CMD + C .
Pour afficher une petite fenêtre bloquante (arrêt du script) pour avertir l'utilisateur et lui demander de cliquer sur "OK" pour poursuivre (débloquer le script) Demander à l'utilisateur de saisir une information à partir d'une fenêtre de dialogue Demander à l'utilisateur de confirmer ou annuler une action à partir d'une fenêtre de dialogue
Exemple console.log('OK'); alert('Attention'); prompt('Qui es-tu ?'); confirm('Es-tu un disponible ?');

console.info('OK') // OK
console.error('KO') // KO
console.dir(document) // details de l'objet document avec ses propriétés et méthodes
alert('Clique sur OK pour continuer') // fenêtre d'avertissement
const firstname = prompt('Quel est ton prénom ?') // fenêtre de dialogue avec un champ de saisi
console.log(`Enchanté ${firstname}`)
const isLoveJS = confirm('Aimes-tu le JS ?') // fenêtre de dialogue avec 2 choix (ok ou annuler)
console.log(`Tu as répondu : ${isLoveJS}`) // Tu as répondu : true pour ok, false pour annuler
              
Chapitre 02 · JavaScript : le coeur du langage
Operateurs.toString()

Opérateurs

Comprendre 4 / 8

Pour manipuler les valeurs et évaluer le expressions

Plusieurs types d'opérateurs

  1. Arithmétiques (Mathématiques) : +, -, *, /, % (modulo),
  2. D'assignation : =, +=, -=, etc.
  3. De comparaison :
    • ==, égalité large sans prendre en compte le type
    • ===, égalité stricte, valeur et type
    • !=, différence de valeur
    • !==, différence de type
    • <, strictement inférieur à
    • >, strictement supérieur à
    • <= , inférieur ou égal
    • >=, supérieur ou égal
  4. Logiques, pour combiner plusieurs opérateurs de comparaison
    • && ou AND : ET
    • || ou OR : OU
    • ! : NON
  5. Ternaire : condition ? valeurSiVrai : valeurSiFaux.
    Notation courte pour une solution binaire à 2 issues possibles
  6. Concaténation, pour mettre les informations (valeurs et textes) bout à bout :
    • + : ancienne syntaxte
      const firstname='Alice', lastname='Bob', fullname=firstname + ' ' + 'lastname';
    • ` (touche ALT GR + 7) et ${} : nouvelle syntaxe
      const firstname='Alice', lastname='Bob', fullname=`${firstname} ${lastname}';
Chapitre 02 · JavaScript : le coeur du langage
StructureControle.toString()

Structure de contrôle conditionnelle

Comprendre 5 / 8

La structure de contrôle conditionnelle (appelée couramment condition) permet à partir d'une condition évaluée à vrai d'exécuter qu'une seule branche de la structure parmi plusieurs possibles

Format d'une structure : if/[elseif]... /[else], avec elseif et else facultatives.

Dans une structure, il peut y avoir plusieurs elseif mais par contre qu'un seul else

  • L'ordre des instructions a une importance
  • La première instruction qui vérifie la condition est exécutée
  • Les structures de contrôle peuvent s'imbriquer les unes dans les autres (idéalement à éviter ou à limiter lorsque c'est possible)

Autre format d'une structure de contrôle : switch(condition), case (criteria): break... default: break

  • La même logique de la structure if, elseif, else
  • else correspond à default
  • plus lisible dans les cas ou il y a une vérification sur le contenu d'une chaîne de caractère
  • Plus performant que if/[elseif]... /[else] lorsqu'il y a un réel besoin de gain de performance pour des applications très complexes et gourmandes en ressources
Chapitre 02 · JavaScript : le coeur du langage
StructureControle.toString()

Structure de contrôle conditionnelle

Faire 5 / 8

const age = 18;

if(age >= 18 && age <= 60) {
  console.log('Adulte');
} else if(age > 60) {
  console.log('Senior')
} else {
  console.log('Enfant ou adolescant')
}

if(age > 17) console.log('Majeur')
if(18 == '18') console.log('Avec 2 =, égalité valeur et pas de type')
if(18 === '18') console.log('Avec 3 =, égalité valeur et type')
if(age != 18) console.log("N'a pas 18 ans")

if(age >= 20) {
  if(age >= 30 && age < 40) console.log('Trentenaire');
  else if(age >= 40 && age <= 49) console.log('Quadra');
  else if(age >= 50) console.log('Quinqua et senoir');
  else console.log('Vingtaine');
}

const country = 'france';
switch(country) {
  case 'France':
    console.log('Vous êtes français');
  break;
  case 'Belgique':
    console.log('Vous êtes belge');
  break;
  default:
    console.log("Vous êtes ni l'un, ni l'autre");
  break;
}

              
Chapitre 02 · JavaScript : le coeur du langage
StructureControle.toString()

Structure de contrôle itérative

Comprendre 5 / 8

Structure de contrôle itérative (appelée couramment boucle)

Parcourir des objets en executant un bloc de code tant qu'une certaine condition est vérifiée

for while do while
Usage Lorsqu'on connait à l'avance le nombre d'iteration à effectuer Lorsqu'on ne connait pas à l'avance le nombre d'iteration à effectuer, la condition est vérifiée avant d'entrer dans la structure Similaire à while, la condition est vérifiée en sortie de la structure, s'exécute au moins une fois
Syntaxe for (let i=0; i<10; i++) { … } while (condition) { … } do while {...} (condition);
  • break permet de quitter la structure, sans ce dernier, le programme va continuer à évaluer le prochain case
  • continue à utiliser lorsque l'on souhaite ne pas prendre en compte l'itération en cours en fonction d'une condition (passer à l'itération suivante sans exécuter l'intégralité des instructions dans la boucle)

Pour les tableaux, JS proposent d'autres méthodes propres tels que .map(), .forEach()

Il existe 2 dérivées de la boucle for spécifiques à JS

  1. for...in
    • Adaptée pour parcourir les noms des propriétés d'un objet
    • for (index in tab) { tab[index] };
  2. for...of
    • Adaptée pour parcourir les valeurs des propriétés d'un objet ou un tableau
    • for (index of tab) { index }
Doc boucles JS
Chapitre 02 · JavaScript : le coeur du langage
StructureControle.toString()

Structure de contrôle itérative

Faire 5 / 8

const max = 5;
console.log("Itération avec for et l'incrémentation")
for(let i=0; i < max; i++) {
  console.log(i);
}

console.log('Itétation avec for et la décrémentation')
for(let i=max; i >= 0; i--) console.log(i)

console.log('Itération avec while')
let i = 0;
while(i < 4) {
  console.log(i);
  i++; // sans l'incrémentation ici, on aura une boucle infinie car 0 toujours inf. à 4
}

console.log('Itération avec do while');
do {
  console.log("Peu importe l'évaluation de la condition, s'exécute au moins 1 fois")
} while(i > 1000);

console.log('Utilisation de break');
for(let i=0; i < 10000; i++) {
  console.log(i)
  if(i === 2) break;
}
console.log('Utilisation de continue');
let j = 0
while(j < 10) {
  j++;
  if(j % 2 === 0) continue;
  console.log(j);
}
              
Chapitre 02 · JavaScript : le coeur du langage
Fonctions.toString()

Les fonctions: définitation, arguments, fonctions littérales, fonctions sous forme de données

Comprendre 6 / 8
  • bloc de code réutilisable, un "programme dans le programme"
  • On utilise une fonction pour regrouper des instructions et l'appeler sur demande.
    Chaque fois qu'on a besoin de ces instructions, il suffira d'appeler la fonction au lieu de répéter toutes les instructions
  • Pour accomplir ce tâche, le cycle de vie d'une fonction comprend 2 phases :
    1. Une phase unique dans laquelle la fonction est déclarée. On définit à ce stade toutes les instructions qui doivent être groupées pour obtenir le résultat souhaité.
    2. Une phase qui peut être répétée une ou plusieurs fois dans laquelle la fonction est appelée pour être exécutée.

En JS, les fonctions peuvent être

  1. Déclarée de manière classique avec le mot-clé function
    function hello(firstname) { return `Hello ${firstname}`;}
  2. Déclarée avec une expression fléchée
    hello(firstname) => `Hello ${firstname}`
  3. Notation fléchée et stockée dans une variable
    const hi = hello (firstname) => `Hello ${firstname}`;
Chapitre 02 · JavaScript : le coeur du langage
ObjetsPersonnalises.toString()

Les objets personnalisées : constructeur, méthodes et propriétés, prototype, objets littéraux, objets sous forme de tableaux associatifs

Comprendre 7 / 8
💡 À retenir : JS n'est pas un langage objet mais tout est objet 💡 À retenir : La syntaxe de classe est possible grâce au sucre syntaxique basé sur les prototypes !

Définitions

    • Constructeur : méthode permettant d'initialiser un objet (instance d'une classe), appelée lorsque l'on utilise l'opérateur new sur une classe
    • Méthodes : les actions que peuvent effectuer un objet ou une classe (méthode statique cad propre à une classe et indépendamment des objets)
    • Propriétés : caractéristiques (les données) d'un objet
    • Prototype : pour simplifier c'est la classe elle même
    • Objets littéraux : notation sous forme d'accolade {} d'une objet à la place de la syntaxe Class {}
    • Objets sous formes de tableaux associatifs : une autre notation avec un tableau qui combine une clé littérale à une propriété ou une méthode
  • Syntaxe de base des classes plus proche et fidèle aux autres langages objets tels que Java/C++
    • Constructeur de l'objet avec la méthode constructor()
    • Méthodes de classe et méthodes statiques (static)
    • getters(accesseurs)/setters(mutateurs) définis par les mots-clés get et set pour récupérer et définir la valeur d'une propriété
    • Héritage prototypal : extends sur la classe et appel obligatoire au constructeur parent via super()
    • Propriétés privées, manipulable uniquement par l'objet lui-même au sein de sa structure, en dehors de l'objet, il faut utiliser les /li>

class JavaScript {
  // Propriété (prop.) privée (encapsulation)
  #creator = 'Brendan Eich';
  // Propriété statique (partagée au niveau de la classe)
  static createdAt = 1995;

  constructor(version, isDynamicallyTyped = true) {
    this.version = version; // Propriété publique
    this.isDynamicallyTyped = isDynamicallyTyped;
  }

  info() {  // Méthode d'instance
    return `JavaScript (${this.version}) - Créé en ${JavaScript.createdAt} par ${this.#creator}.`;
  }

  static compareVersion(v1, v2) {
    return `Comparaison entre la version ${v1} et la version ${v2}.`;
  }

  get creator() {
    return this.#creator;
  }
}

class TypeScript extends JavaScript {
  static createdAtTypeScript = 2012;   // Propriété statique propre à la classe fille

  constructor(version, versionCompiler) {
    super(version, false); // Appel du constructeur parent de la classe JavaScript
    this.versionCompiler = versionCompiler; // Propriété spécifique à TypeScript
  }

  info() { // Surcharge (override) de la méthode d'instance
    const basicInfo = super.info();
    return `${basicInfo}\n TypeScript y ajoute le typage statique (compilateur v${this.versionCompiler}).`;
  }

  compiler() {   // Méthode propre à la classe fille
    return `Transpilation du code TypeScript (v${this.versionCompiler}) vers JavaScript (${this.version})...`;
  }
}

// 1. Instanciation de la classe mère
const es6 = new JavaScript('ES6');
console.log('•', es6.info()); 

// 2. Accès à la méthode et propriété statiques
console.log('•', 'Created : ', JavaScript.createdAt);
console.log('•', JavaScript.compareVersion('ES5', 'ES6'));

// 3. Instanciation de la classe fille
const ts5 = new TypeScript('ES2022', '5.0');
console.log('•', ts5.info()); 
console.log('•', 'TS typage dynamique : ', ts5.isDynamicallyTyped);
console.log('•', ts5.compiler());
              
Chapitre 02 · JavaScript : le coeur du langage
ObjetsGlobaux.toString()

Les objets globaux : Array, Date, Math, RegExp, String... Manipuler les tableaux, les dates, les chaînes de caractères

Comprendre 8 / 8
Array(tableaux) Date Math RegExp String
Définition Liste ordonnée d'éléments normalement appartenant au même domaine de définition (type).
Avec JS, un tableau peut contenir en même temps un string, un number, un boolean, etc.
Pour gérer les opérations sur les dates à partir d'une instance const dt = new Date(); L'objet Math pour les opérations mathématiques Pour manipuler les expressions régulières afin de chercher, remplacer, découper des chaînes de caractères à partir des motifs correspondants L'objet String, à ne pas confondre avec le type du même nom, permet de manipuler les chaînes de caractères (caractères alphanumériques)
Propriétés et méthodes
  • .length : nombre d'éléments dans le tableau
  • .push(valeur): ajouter une valeur à la fin du tableau
  • .pop() : retirer un élément à la fin du tableau
  • .shift() : retirer un élément au début du tableau
  • .unshift(valeur) : ajouter un élément au début du tableau
  • .getDay() : n° du jour de la semaine (0=dimanche à 6=samedi)
  • .getDate(), setDate() : n° du jour du mois entre 1 et 31
  • .getMonth(), setMonth() : n° du mois courant (0=janvier à 11=décembre)
  • .getHours(), setHours() : heure courante (0=minuit)
  • .getMinutes(), setMinutes() : nombre de minutes de l'heure courante
  • .getTime(), setTime() : nombre de ms écoulées depuis le 1er janvier 1970
  • .getFullYear(), setFullYear() : année en cours sur 4 chiffres
  • .getYear(), setYear() : année en cours sur 2 chiffres
  • .parse() : convertir une date en nombre de millisecondes depuis le 01/01/1970
  • .toString(), toLocaleString() : convertir l'objet Date en une chaîne
  • .PI : Quotient de la circonférence d'un cercle par son diamètre = 3,14159
  • .LN10 : Logarithme naturel de 10 = 2,302
  • .abs() : valeur positive absolue du nombre passé en argument
  • .ceil(), floor() : entier supérieur/inférieur d'une valeur passée en argument
  • .max(), min() : nombre le plus grand/petit dans la série en argument
  • .pow() : nombre élevé à une puissance passée en argument
  • .random() : renvoyer un nombre aléatoire compris entre 0 et 1
  • .sqrt() : racine carrée d'un nombre passé en argument
  • .test() : renvoyer une valeur booléenne si le test est vérifié ou non
  • .exec() : renvoyer la première occurrence trouvée dans la chaîne
  • .match() : trouver les occurrences d'une sous-chaîne de caractères
  • .length : longueur d'une chaîne de caractères
  • .charAt() : accéder à un seul caractère dans une chaîne
  • .concat() : concatèner plusieurs chaînes de caractères
  • .match() : rechercher une expression régulière dans une chaîne
  • .replace() : remplacer une expression régulière dans une chaîne
  • .search() : effectuer une recherche dans une chaîne de caractères
  • .slice() : extraire une sous-chaîne via un caractère de début et de fin
  • .split() : découper une chaîne en fonction d'un séparateur passé en argument
  • .substr() : renvoyer une sous-chaîne via une position et une longueur
  • .substring() : renvoyer une sous-chaîne via une position
  • .toLowerCase() : convertir en minuscules
  • .toUpperCase() : convertir en majuscules

Les autres objets

  • Number : les nombres
  • Boolean : vrai ou faux
  • Undefined : absence involontaire de valeur (aucune valeur n'a encore été assignée à une variable)
  • NULL : absence volontaire de valeur
Chapitre 02 · JavaScript : le coeur du langage
ObjetsGlobaux.toString()

Les objets globaux : Array, Date, Math, RegExp, String... Manipuler les tableaux, les dates, les chaînes de caractères

Faire 8 / 8

// DATES
console.log('[DATES]\n');
const today = new Date();
console.log("Date du jour", today);
const newYear = new Date("January 1, 2027 00:00:00")
console.log('Nouvel an formaté en date locale, ici FR, ', newYear.toLocaleDateString());
const christmas = new Date(2026,11,25,8,30,0)
console.log('Noel', christmas);
console.log('Jour de Noel en chiffre entre 0(Dim.) et 6(Sam.) : ', christmas.getDay());
console.log('Jour du mois entre 1 et 31 : ', christmas.getDate());
christmas.setHours(0);
christmas.setMinutes(0);
console.log('Noel en chaîne de caractères', christmas.toString());

// MATHS
console.log('\n[MATHS]\n');
console.log('PI', Math.PI) ;
console.log('Valeur absolue de -99.99 : ', Math.abs(-99.99)) ;
console.log('Arrondi entier inférieur de 8.99 : ', Math.floor(8.99)) ;
console.log("Arrondi à l'entier supérieur de 9.50 : ", Math.ceil(9.50)) ;
console.log('Arrondi de 8.44 à l'entier le plus proche: ', Math.round(8.44)) ;
console.log('Nombre aléatoire entre 0 et 1 non arrondi : ', Math.random()) ;
console.log('Nombre aléatoire entre 0 et 1000 et arrondi : ', Math.ceil(Math.random()*1000)) ;

// REGEXP
console.log('\n[REGEXP] sur hello\n');
console.log("Vrai, il y a un e : ", /e/.test('Hello'));
console.log("Faux, ça ne commence pas par un l : ", /^l/.test('Hello'));
console.log("Vrai, insensible à la casse, accepte h ou H : ", /^h/i.test('Hello'));
console.log("Vrai, le . signifie n'importe quel caractère sauf un saut de ligne : ", /^Hel.o/.test('Hello'));
console.log("Vrai, le + signifie au moins un caractère après le 2eme l : ", /^Hel+o/.test('Hello'));
console.log("Vrai, la lettre a est facultative et ça termine par o : ", /^Hea*llo$/.test('Hello'));
console.log("Vrai, c'est soit l ou o, * signifie 0, 1 ou plusieurs fois : ", /^He(l|o)*$/.test('Hello'));
console.log("Vrai, au moins une fois la lettre l, e, o, ou : ", /^H[leos]+/.test('Hello'));
console.log("Faux, ^ à l'intérieur [] signifie aucun des caractères présentes entre [] : ", /^H[^leo]+/.test('Hello'));
console.log("Vrai, [a-z] signfie les lettres de l'alphabet de a à z : ", /^H[a-z]*/.test('Hello'));
console.log("Vrai, commence par H, termine o et aucun chiffre entre les deux : ", /^H[^0-9]*o$/.test('Hello'));

// STRING
console.log('\n[STRING] "Hello World" \n');
const hw = "Hello World";
console.log("3ème lettre : ", hw.charAt(2));
console.log("Ajout de ! : ", hw.concat(" !"));
console.log("Position de la première lettre o dans la chaîne : ", hw.indexOf("o"));
console.log("Position de la dernière lettre o dans la chaîne : ", hw.lastIndexOf("o"));
console.log("Bonjour n'existe pas dans la chaîne : ", hw.match(/bonjour/));
console.log("Supprimer les voyelles : ", "Supprimer les voyelles".replace(/[aeyuio]/g, '')) ;
console.log("Découper le mot à partir du caractère espace pour obtenir un tableau", hw.split(" ")) ;

// NUMBER
console.log('\n[NUMBER]\n');
const nb1 = 10.0;
const nb2 = 15;
const str = '20';
console.log('La somme de 10 et 15 = ', nb1 + nb2);
console.log("Attention la somme de 10 et 20 => concaténation => ", nb1 + str);

// UNDEFINED
console.log('\n[UNDEFINED]\n');
let age;
console.log('La variable age est ', age);

// NULL
console.log('\n[NULL]\n');
const isAdmin = null
if(typeof isAdmin === 'undefined' || isAdmin === 'undefined') {
  console.log('IsAdmin est undefined');
}
else if(isAdmin === null && typeof isAdmin === "object") { 
  // pour des raisons historiques Null est de type object
  console.log('IsAdmin est null');
} else {
  console.log('IsAdmin est définie');
}
              
Pour apprendre les REGEX Pour apprendre et tester les REGEX
Exercice

Atelier 2.1

JavaScript : le coeur du langage
Correction exercice

Correction Atelier 2.1

JavaScript : le coeur du langage
Chapitre 03

Les objets du navigateur

4 notions
Avant de commencer

Quelles sont vos connaissances sur les objets du navigateur ?

Chapitre 03 · Les Les objets du navigateur
Hierarchie.objets()

La hiérarchie des objets

Comprendre 1 / 4
  • Le navigateur expose une structure hiérarchique d'objets appelée BOM (Browser Object Model)
  • L'objet global window représente la fenêtre du navigateur ou l'onglet en cours d'exécution
  • Tout ce qui est global en JavaScript s'attache à cet objet window
BOM tree
Source image GeekforGeek
Chapitre 03 · Les objets du navigateur
PrincipauxObjets.list()

Les principaux objets : window, document, location, screen, navigator, form... Leurs propriétés et méthodes

Comprendre 2 / 4
💡 À retenir : window est implicite, au lieu d'écrire window.document, window.location, on écrira directement document, location, ...!
  • window : objet racine
  • document : répresente le DOM (Document Object Model) c'est-à-dire le document HTML.
    Il permet de sélectionner, modifier et créer des éléments HTML de la page active
  • History : historique de navigation conservé dans le navigateur
    • .length : nombre de pages visitées pour la fenêtre active
    • .back() : charge la dernière page visitée et présente dans l'historique
    • .forward() : charge la page suivante visitée et présente dans l'historique
    • .go() : charge la page liée à un index dans l'historique
  • location : gestion l'URL de la page courante.
    • location.href : récupère ou modifie l'URL complète (provoque une redirection)
    • Les autres propriétés : .protocol, .hostname, .host, .port, .pathname, .hash
    • location.reload() : recharge la page
    • location.replace() : remplace l'URL de la page actuelle parune autre
  • screen : métadonnées sur l'écran de l'appareil de l'utilisateur
    • screen.width, screen.height donnent les dimensions de l'écran
    • Les autres propriétés :
      • availHeight, availWidth : hauteur/largeur utile de l'écran
      • height, width : hauteur/largeur totale d'affichage de l'écran
      • colorDepth : nombre de couleurs que l'écran peut restituer
      • pixelDepth : retourne la résolution de l'écran en bits par pixel
  • navigator : informations sur le navigateur et l'appareil utilisés
    • navigator.language : retourne la langue définie dans le navigateur
    • navigator.geolocation : retourne un objet utilisé pour localiser l'utilisateur
    • navigator.product : retourne le nom du moteur utilisé par le navigateur
    • navigator.cookieEnabled : détermine si les cookies sont autorisés ou non
    • navigator.appName : retourne le nom du navigateur
    • navigator.appCodeName : retourne le nom de code du navigateur
    • navigator.appVersion : retourne la version du navigateur utilisée
    • navigator.online : détermine si le navigateur est en ligne ou pas
    • navigator.userAgent : retourne l'en-tête du fichier user-agent envoyé par le navigateur au serveur
  • document.forms : un objet qui contient tous les formulaires de la page
    Le formulaire permet de manipuler les champs de saisie et de gérer la soumission des données à travers des propriétés et des méthodes
Chapitre 03 · Les objets du navigateur
Manipuler.fenetres()

Manipuler des fenêtres

Comprendre 3 / 4
  • C'est le parent de tous les objets rattachées à la fenêtre du navigateur
  • Il est implicite, c'est-à-dire, il n'est pas utile de le nommer pour accéder aux objets placés en dessous
  • Propriétés
    • .status, .defaultStatus : message de la barre d'état
    • .innerHeight, .innerWidth : hauteur/largeur utilisable d'une fenêtre
    • .outerHeight, .outerWidth : hauteur/largeur extérieure d'une fenêtre
    • .pageXoffset, .pageYoffset : position horizontale/verticale de la fenêtre
    • .name : nom donné à la fenêtre
    • .parent : fenêtre parente
    • .self, .window : fenêtre courante
  • Les méthodes
    • alert(), confirm(), prompt() : boîtes de dialogue
    • back(), forward() : navigation dans l'historique
    • find() : recherche de texte dans la page active (retourne true si le texte est présent sinon false)
    • focus() : active une fenêtre
    • moveTo() : déplace la fenêtre active
    • open(), close() : ouvre/ferme une fenêtre
    • print() : imprime la page active
    • resizeBy(), resizeTo() : modifie la taille de la fenêtre
    • setInterval() : effectue un traitement à intervalle régulier
    • setTimeOut() :déclenche une minuterie
Chapitre 03 · Les objets du navigateur
Manipuler.fenetres()

Manipuler des fenêtres

Faire 3 / 4

const w = 600;
const h = 400;
const newPage = window.open(
  'https://www.ib-formation.fr/formations/developpement-web-et-mobilite/javascript-fondamentaux',
  '_blank',
  `width=${w},height=${h}`
);
// Coordonnées pour centrer la fenêtre
const centerH = (window.screen.width / 2) - (w / 2);
const centerV = (window.screen.height / 2) - (h / 2);
if(newPage) {
  newPage.focus();
  newPage.moveTo(centerH, centerV);
  // fermeture au bout de 10 secondes
  setTimeout(function(){
    newPage.close();
  }, 10*1000);
}
              
Chapitre 03 · Les objets du navigateur
Gerer.timers()

Gérer des timers

Comprendre 4 / 4

Les timers sont des exécutions asynchrones c'est-à-dire différés dans le temps en fonction du délai qui a été défini en millisecondes (ms)

  • setTimeout() : exécute une fonction après un délai déterminé (en ms)
  • clearTimeout() : stoppe la minuterie lancée par setTimeout()
  • setInterval() : appelle une fonction de manière répétée, avec un certain délai fixé entre chaque appel (en ms)
  • clearInterval() : stoppe la minuterie lancée par setInterval()

let intervalID;
const colors = ['red', 'green', 'blue'];

function changeColor(colors) {
  return colors[Math.floor(Math.random() * colors.length)];
}

intervalID = setInterval(() => {
  const color = changeColor(colors)
  console.log('Couleur actuelle : ', color)
}, 1000);

const timeoutID = setTimeout(() => {
  clearInterval(intervalID)
  console.log('Fin !')
}, 10*1000);
              
Doc. setTimeout() Doc. clearTimeout() Doc. setInterval() Doc. clearInterval()
Exercice

Atelier 3.1

Les objets du navigateur
Correction exercice

Correction Atelier 3.1

Les objets du navigateur
Chapitre 04

Le DOM

4 notions
Avant de commencer

Quelles sont vos connaissances sur le DOM ?

Chapitre 04 · Le DOM
Introduction.XmlXhtmlHtml()

Introduction au XML, XHTML et HTML

Comprendre 1 / 4
XML HTML XHTML
Définition XML pour eXtensible Markup Language, le langage de balisages strict et extensible servant à définir d'autres langages de balisage et à structurer des données HTML pour HyperText Markup Language, le langage de balisage souple et tolérant, conçu pour structurer les pages web XHTML pour eXtensible HyperText Markup Language, évolution stricte du HTML basée sur les règles du XML.
Il impose une syntaxe rigoureuse : balises toujours fermées, imbrication correcte, noms en minuscules et unicité des attributs.
Normes Les balises XML ne sont pas prédéfinies, l'auteur du fichier doit définir ses propres balises en respectant les normes du langage Les balises HTML sont prédéfinies, l'auteur doit les utiliser Les balises XHTML sont prédéfinies, l'auteur doit les utiliser
Usage XML est principalement utilisé pour stocker des données structurées ou les échanger entre des applications.
Casse Sensible à la casse Insensible accepte uniquement les minuscules
Extension .xml .html, .htm .xtml
Tolérence des erreurs Strict, le document est refusé s'il est mal formaté Le navigateur corrige les erreurs Strict, le document est refusé s'il est mal formaté

Les autres langages de balisages dérivées du XML sont RSS, SVG, etc.

Doc. normes XML 1.1
Chapitre 04 · Le DOM
Introduction.XmlXhtmlHtml()

Introduction au XML, XHTML et HTML

Faire 1 / 4

<?xml version="1.0" encoding="UTF-8"?>
<programmation>
  <langage id="1">
    <nom>HTML</nom>
    <auteur>Sir Tim Berners-Lee</auteur>
    <annee>1990</annee>
  </langage>
    <langage id="2">
    <nom>CSS</nom>
    <auteur>Håkon Wium Lie et Bert Bos</auteur>
    <annee>1994</annee>
  </langage>
  <langage id="3">
    <nom>JavaScript</nom>
    <auteur>Brendan Eich</auteur>
    <annee>1995</annee>
  </langage>
</programmation>
          

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Exemple HTML5</title>
</head>
<body>
  <div>
    <ul>
      <li>HTML</li>
      <li>Sir Tim Berners-Lee</li>
      <li>1990</li>
    </ul>
    <ul>
      <li>CSS</li>
      <li>Håkon Wium Lie et Bert Bo</li>
      <li>1994</li>
    </ul>
    <ul>
      <li>JavaScript</li>
      <li>Brenden Eich</li>
      <li>1994</li>
    </ul>
  </div>
</body>
</html>
        

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://w3.org">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <title>Exemple XHTML</title>
  </head>
  <body>
    <ul>
      <li>HTML</li>
      <li>Sir Tim Berners-Lee</li>
      <li>1990</li>
    </ul>
    <ul>
      <li>CSS</li>
      <li>Håkon Wium Lie et Bert Bo</li>
      <li>1994</li>
    </ul>
    <ul>
      <li>JavaScript</li>
      <li>Brenden Eich</li>
      <li>1994</li>
    </ul>
  </body>
</html>
            
Chapitre 04 · Le DOM
DOM.navigateurs()

Le DOM et les navigateurs

Comprendre 2 / 4
  • Le DOM est une API (interface de programmation pour faire communiquer ou interagir 2 applications) permettant de représenter et manipuler les éléments constituant une page Web
  • A l'aide des méthodes offertes par l'objet document de JavaScript, une page web peut être modifiée
  • Une représentation de la page web sous forme d'une structure arborescente d'objets en mémoire
  • Le navigateur analyse le HTML pour construire l'arbre où chaque balise devient un noeud (node)
DOM tree DOM tree
Source image Centralesupelec Source image GeekforGeek
Chapitre 04 · Le DOM
Selection.elements()

Sélectionner des éléments : API Selector Lvl 1 et 2

Comprendre 3 / 4
💡 À retenir : .querySelector() et .querySelectorAll() permettent de sélectionner les éléments à partir des sélecteurs CSS !
  • Plusieurs méthodes permettent d'accéder à un ou plusieurs éléments du DOM à partir des attributs HTML id ou class, du nom de la balise HTML ou une combinaison de sélecteurs css
  • Nous retiendrons dans le cadre de ce cours principalement les méthodes .querySelector() et querySelectorAll() qui permettent de tout sélectionner à partir des sélecteurs CSS.
    • document.querySelector(sélecteur) : retourne le premier élément du document HTML qui correspond au sélecteur selector
    • document.querySelectorAll(sélecteur) : retourne tous les éléments du document HTML qui correspond au sélecteur selector sous forme de tableau
  • Les autres méthodes :
    • .getElementById(sélecteur) sélectionne un élément en fonction de son identifiant
    • .getElementsByName(sélecteur) sélectionne un ou plusieurs éléments en fonction d'un nom passé en argument
    • .getElementsByTagName(sélecteur) sélectionne un ou plusieurs éléments en fonction d'un nom de balise passé en argument
    • .getElementsByClassName(sélecteur) sélectionne un ou plusieurs éléments en fonction d'un nom de classe passé en argument
Chapitre 04 · Le DOM
Manipuler.elements()

Manipuler des éléments : créer et insérer de nouveaux éléments, modifier les attributs d'un élément, modifier le contenu

Comprendre 4 / 4

Dans les exemples suivantes, element et parent désignent un objet HTML récupéré à partir de document.querySelector() ou un équivalent

  1. Créer
    • document.createElement("balise_HTML") : crée un nouvel élément en mémoire.
    • document.createTextNode() : crée un nouveau noeud de texte
  2. insérer
    • parent.insertAdjacentHTML(position, element) : insère un nouveau noeud HTML dans l'élément element par rapport à la position spécifiée. Position prend les valeurs suivantes :
      • Beforebegin : avant l'élément lui-même ;
      • Afterbegin : juste à l'intérieur de l'élément, avant son premier enfant ;
      • Beforeend : juste à l'intérieur de l'élément, après son dernier enfant ;
      • Afterend : après l'élément lui-même.
    • element.insertBefore() Insère le noeud spécifié juste avant un élément de référence parmi les enfants du noeud courant
    • parent.appendChild() Ajoute un noeud au noeud parent spécifié
    • parent.appendChild(element) ou parent.append(element) : insère l'élément à la fin du conteneur.
    • element.replaceWith(nodeEl): remplace l'élément courant element par le noeud nodeEl.
  3. Lire
    • element.textContent : recupère le contenu textuel de l'élément
    • element.getAttribute("nom") : lecture génériques des attributs
    • element.id, element.className ou element.dataset : accès direct aux propriétés courantes et aux attributs de données (data-*)
    • element.parentElement : renvoie le parent du noeud (textuel ou html) ou null
    • parent.firstElementChild() : renvoie le premier noeud enfant de type element ou null
    • parent.childNodes : renvoie une collection de noeuds enfants
    • parent.firstChild, parent.lastChild : renvoie le premier/dernier noeud enfant du noeud courant
    • element.nextSibling, parent.previousSibling : renvoie le noeud suivant/précédent immédiatement le noeud spécifié
    • element.nodeValue : renvoie ou définit la valeur du noeud courant
    • element.attributes : renvoie une collection des noeuds d'attribut du noeud spécifié
  4. Modifier
    • element.textContent="nouveau contenu textuel": remplace le contenu textuel par le nouveau contenu après = de l'objet element
    • element.innerHTML="<h1>titre 1<h1>" : l'objet element est remplacé par l'élément <h1>
    • element.setAttribute("nom_attribut", "valeur") : création ou modification d'un attribut
  5. Supprimer
    • element.removeChild() : retire et retourne le noeud enfant
    • element.remove() : supprime l'élément du DOM
Exercice

Atelier 4.1

Le DOM
Correction exercice

Correction Atelier 4.1

Le DOM
Chapitre 05

La gestion des évènements

7 notions
Avant de commencer

Quelles sont vos connaissances sur la gestion des évènements ?

Chapitre 05 · La gestion des évènements
Gestionnaire.evenements()

Le gestionnaire d'évènements

Comprendre 1 / 5
  • Les événements permettent de rendre les pages Web plus interactives
  • Il exite plusieurs dizaines d'événement dont ceux associés à la souris (click, dbclick, mouseover, mouseout etc.), formulaire (focus, blur, change, submit), clavier (keydown, keyup, keypress etc).
  • La méthode .addEventListener(événement, callback(e), propagation) permet de greffer un événement à un élément HTML
  • La fonction callback() peut prendre un argument en paramètre nommé communément e ou event
    Cet argument est un objet qui contient des propriétés et méthodes correspondant à l'événement qui a été déclenché.
    Les événements de type click, mouse ou keyup n'auront pas les mêmes attributs.
  • La fonction callback() est exécutée au moment où l'événement aura lieu
  • L'attribut e.target.value permet d'obtenir la valeur de l'élément HTML sur lequel un événement a été greffé.

const btn = document.querySelector("button");
const input = document.querySelector("input");
if(btn) {
  btn.addEventListener("click", (event) => {
    console.log("Bouton cliqué à cet endroit : ", "x", event.clientX, "y", event.clientY);
  });
}

if(input) { 
  input.addEventListener('keypress', (event) => {
    console.log("Tu as tapé la lettre : ", event.key);
  })
}
              
Chapitre 05 · La gestion des évènements
Gestionnaire.evenements()

Le gestionnaire d'évènements

Comprendre 1 / 5

Liste non exhaustive des événements pouvant être aux éléments HTML

  • click : cliquer sur l'élément
  • dblclick : double-cliquer sur l'élément
  • mouseover : faire entrer le curseur sur l'élément
  • mouseout : faire sortir le curseur de l'élément
  • mousedown : maintenir le bouton gauche de la souris sur l'élément
  • mouseup : relâcher le bouton gauche de la souris sur l'élément
  • mousemove : déplacer le curseur sur l'élément
  • keydown : maintenir une touche de clavier sur l'élément
  • keyup : relâcher une touche de clavier sur l'élément
  • keypress : taper une touche de clavier sur l'élément
  • focus : cibler l'élément
  • blur (l'inverse de focus) : annuler le ciblage de l'élément
  • change : changer la valeur d'un élément
Liste des événements par type
Chapitre 05 · La gestion des évènements
Modele.DOM()

Modèle DOM

Comprendre 2 / 5
💡 À retenir : privilégiez la notation moderne .addEventListener() !

Plusieurs approches coexistent pour attacher des événements :

  • Attributs HTML (obsolète) : <button onclick="maFonction()">, à éviter, ne permet pas de faire une séparation stricte entre la structure (HTML) du comportement (JS)
  • Propriétés DOM (DOM Level 0) : element.onclick = maFonction;, limité à une seule fonction par événement et par élément, la réaffectation écrase la précédente
  • Modèle moderne (DOM Level 2) : element.addEventListener(), autorise l'association de plusieurs écouteurs distincts sur un même événement et offre un contrôle fin sur le déroulement
Chapitre 05 · La gestion des évènements
ObjetEvent.toString()

L'objet Event

Comprendre 3 / 5

Lorsqu'un événement se déclenche, le navigateur transmet automatiquement un objet Event en argument de la fonction de rappel (callback).
Cet objet fournit les propriétés et méthodes indispensables à la gestion de l'événement.

  • event.target : l'élément précis qui a déclenché l'événement
  • event.currentTarget : l'élément sur lequel l'écouteur est actuellement attaché
  • event.preventDefault() : annule le comportement natif du navigateur (par exemple, empêcher l'envoi d'un formulaire vide ou la navigation d'un lien)
  • >event.stopPropagation() : stoppe la propagation de l'événement dans l'arbre DOM

<form action="">
    <input type="email" name="email" >
    <input type="password" name="password" >
    <input type="text" name="department" >
    <input type="button" value="Valider" >
</form>

const btnSubmit = document.querySelector('input[type=button]')
let errors = [];
if(btnSubmit) {
  btnSubmit.addEventListener('click', function(e) {
    e.stopPropagation();
    const inputs = document.querySelectorAll('input:not([type="button"])');

    if(inputs) {
      inputs.forEach((ipt) => {
          if(ipt.value === '' || ipt.value.length === 0 ) {
              errors.push(` le champ ${ipt.name} est vide`)
          }
      });
    }

    if(errors.length) {
      e.preventDefault();
      console.error(errors.toString())
    } else {
      console.log('OK tout est remplit, on peut soumettre la requête au serveur');
    }

    errors = [];
  })
}
            
Chapitre 05 · La gestion des évènements
Propagation.evenements()

La propagation des évènements

Comprendre 4 / 5

Le troisième argument de la méthode .addEventListener (event, callback, boolean) détermine le flux d'événement.
Sa valeur est facultative et vaut false par défaut

  • true => phase de capture : propagation de l'événement en descendant la hiérarchie du DOM, en partant de la racine (window/document) jusqu'à la cible
  • false => phase de bouillonnement (Bubble ou Bubbling) : propagation de l'événement en remontant la hiérarchie du DOM, remonte de la cible vers ses parents successifs.
    C'est le comportement par défaut.

La grande majorité des gestionnaires s'exécutent par défaut durant la phase de bouillonnement.
Ce mécanisme permet notamment la délégation d'événements, placer un unique écouteur sur un parent pour gérer dynamiquement les interactions de tous ses enfants.

Source image Frontend Turing
Chapitre 05 · La gestion des évènements
Compatibilite.differentsNavigateurs()

Compatibilité avec les différents navigateurs

Comprendre 5 / 5

Historiquement, la gestion des événements a été un terrain de divergences majeures :

  • Le navigateur Internet Explorer (IE < 9) Utilisait la méthode attachEvent('onclick') au lieu de .addEventListener() absence de passage automatique de l'objet event (disponible via window.event), et inversion du modèle de propagation
  • L'utilisation des bibliothèques externes comme JQuery était une bénédiction pour tout normaliser
  • Depuis, les choses ont évolué, les navigateurs modernes respectent tous les standards W3C
  • Le site CanIUse permet de voir les fonctions compatibles par navigateur et version
Site CanIUse
Exercice

Atelier 5.1

La gestion des évènements
Correction exercice

Correction Atelier 5.1

La gestion des évènements
Chapitre 06

Les formulaires

3 notions
Avant de commencer

Quelles sont vos connaissances sur les formulaires ?

Chapitre 06 · Les formulaires
DifferentsElements.list()

Les différents éléments d'un formulaire

Comprendre 1 / 3

Un formulaire HTML regroupe des balises permettant à l'utilisateur de saisir et d'envoyer des données

Les éléments d'un formulaire

  • Conteneur principal : <form>.
  • Champs de saisie :
    • <input> (avec ses multiples type : text, password, number, checkbox, radio, file, etc.)
    • <textarea> pour les textes longs
    • <select> pour les listes déroulantes avec la balise <option> pour le(s) choix possible(s)
    • <datalist> pour un choix suggéré avec l'autocomplétion
  • Champs de soumission :
    • input ou button de type submit
    • input ou button de type button
    • un bouton classique
  • Champ d'annulation, input de type reset

Il est possible d'accéder aux éléments d'un formulaire à partir du parent <form> et à l'aide des méthodes du DOM pour récupérer les enfants ou via la collection document.forms


<form id="sign-in">
    <input type="email" name="email" >
    <input type="password" name="password" >
    <input type="button" value="Se connecter" >
</form>
<form id="sign-up">
    <input type="email" name="email" >
    <input type="password" name="password" >
    <input type="password" name="confirm-password" >
    <input type="text" name="firstname" >
    <input type="text" name="lastname" >
    <input type="text" name="department" >
    <input type="submit" value="S'inscrire" >
</form>

const form = document.forms["sign-in"];
const email = form.elements["email"];
console.log(email.value);
              
Chapitre 06 · Les formulaires
VerifierDonnes.saisies()

Vérifier les données saisies dans les différents champs

Comprendre 2 / 3

Il faut écouter les événements qui se déclenchent sur formulaire

Liste non exhautive des événements associées aux éléments d'un formulaire

  • input : déclenché lorsqu'une valeur est saisi dans un champ input
  • change : déclenché lorsque la valeur d'un champ input ou select change
  • focus : déclenché lorsqu'il y a le focus sur le champ input
  • blur : déclenché lorsqu'il y a une perte du focus sur le champ input
  • submit : déclenché à la soumission du formulaire
  • reset : déclenché lorsque toutes les données d'un formulaire sont supprimées

Comment vérifier les données saisies ?

  • La validation s'articule entre les mécanismes natifs du HTML5 et le contrôle fin en JavaScript :
    1. Validation HTML5 native : utilisation d'attributs de contrainte comme required, minlength, maxlength, pattern (expressions régulières) ou des types spécifiques (email, url).
      Le navigateur bloque automatiquement la soumission si les critères ne sont pas respectés
    2. Validation JavaScript : permet d'afficher des messages d'erreur personnalisés et de contrôler l'intégrité avant l'envoi
      • On écoute les événements input, change ou blur sur les éléments, on vérifie la validité via ses propres fonctions ou l'API de validation du DOM avec element.validity, element.checkValidity(), ou champ.setCustomValidity("message")
      • On écoute l'événement submit et on vérifie avec ses propres fonctions

const age = document.querySelector("#age");
const email = document.querySelector('#email');
age.addEventListener("input", (e) => {
  if (e.target.value < 18) {
    e.target.setCustomValidity("Vous devez être majeur !");
  } else {
    e.target.setCustomValidity(""); // supprimme le message d'erreur
  }
});
email.addEventListener('blur', function (e) {
  if(!e.target.validity) {
    e.target.setCustomValidity("L'email n'est pas au bon format");
  } else {
    e.target.setCustomValidity('');
  }
})
              
Chapitre 06 · Les formulaires
SoumettreFormulaire.submit()

Soumettre un formulaire

Comprendre 3 / 3

La soumission d'un formulaire déclenche un événement submit sur l'élément <form> (et non sur le bouton de validation) :

  • Interception : On utilise event.preventDefault() pour stopper le comportement par défaut du navigateur (qui recharge la page lors d'une soumission classique)
  • Traitement asynchrone : Cela permet de récupérer les données (via un objet FormData) et de les envoyer au serveur en arrière-plan via l'API fetch (AJAX)

const form = document.querySelector("form");
form.addEventListener("submit", (event) => {
  event.preventDefault(); // empêche le rechargement de la page
  const formData = new FormData(form); // récupère tous les champs et leurs valeurs
  try {
    console.log("Formulaire envoyé avec succès !");
  } catch (erreur) {
    console.error("Erreur lors de l'envoi :", erreur);
  }
}); 
              
Exercice

Atelier 6.1

Les formulaires
Correction exercice

Correction Atelier 6.1

Les formulaires
Chapitre 07

Les styles CSS

6 notions
Avant de commencer

Quelles sont vos connaissances sur les styles CSS ?

Chapitre 07 · Les styles CSS
RappelCss.go()

Rappel sur les styles CSS

Comprendre 1 / 6
  • Sélecteur : élément HTML ciblé
  • Propriété : élément de style ciblé
  • Valeur : valeur à appliquer à l'élément de style ciblé

/* Commentaires en CSS */

Source image W3CSchools
Chapitre 07 · Les styles CSS
ManipulerCss.methods()

Manipuler les styles CSS

Comprendre 2 / 6

Les méthodes et propriétés à utiliser sur un objet HTML

  • element.attributes.class.value : valeur de l'attribut class
  • element.classList.add('alert-danger') : ajoute la valeur alert-danger dans la liste des valeurs de l'attribut class de l'élément
  • element.classList.remove('alert-danger) : supprime la class alert-danger dans la liste des valeurs de l'attribut class de l'élément
Chapitre 07 · Les styles CSS
Modifier.proprieteElement()

Modifier une propriété de style d'un élément

Comprendre 3 / 6
💡 À retenir : les propriétés CSS en JS sont en camelCase (1ère lettre minuscule puis 1ère lettre de chaque mot en majuscule) !

Les propriétés CSS écrites en kebab-case (ex. background-color) se convertissent en camelCase en JavaScript :

  • background-color devient backgroundColor
  • font-size devient fontSize
  • text-decoration devient textDecoration
  • Etc.

const h1 = document.querySelector("#h1");
h1.style.color = "#fefefe";
h1.style.backgroundColor = "#141414";
h1.style.padding = "16px";
              
Chapitre 07 · Les styles CSS
ModifierClass.element()

Modifier la classe d'un élément

Comprendre 4 / 6
💡 À retenir : la manipulation du style via .classList est fortement recommandée car c'est plus performant et plus facile à maintenir !
  • element.classList.add("nomClasse") : ajoute une classe
  • element.classList.remove("nomClasse") : retire une classe
  • element.classList.contains("nomClasse") : vérifie que l'élément possède une classe (renvoie un booléen)
  • element.classList.toggle("nomClasse") : ajoute la classe si elle est absente, la retire si elle est présente

const p = document.querySelector(".paragraph");
p.classList.toggle("active");
if(p.classList.contains('active')) {
  p.classList.add('highlight');
} else {
  p.classList.remove('highlight');
}
              
Chapitre 07 · Les styles CSS
Modifier.aspectElement()

Modifier l'aspect d'un élément

Faire 5 / 6

const container = document.querySelector(".container");
container.style.opacity = "0.5";
container.style.borderRadius = "8px";
container.style.boxShadow = "0 4px 6px #ccc";
// ou en appliquant une classe CSS qui définit les propriétés et valeurs ci-dessus
container.classList.add('container-shadow');
/**
Dans le CSS
.container-shadow {
  opacity: .5;
  border-radius: 8px;
  box-shadow: 0 4px 6px #ccc;
}
*/
              
Chapitre 07 · Les styles CSS
Element.update()

Déplacer, afficher, masquer, réduire un élément

Faire 6 / 6

// [Déplacer] : propriétés de positionnement (top, right, bottom et left avec position: relative ou absolute) 
//              ou des transformations CSS (plus performantes car gérées par le GPU)
element.style.position = 'relative';
element.style.left = '100px';
element.style.top = '20px';

element.style.transform = "translate(150px, 50px)";


// [Afficher / Masquer] : en utilisant les propriétés display, hidden et opacity
element.style.display = "none"; // cache l'élément et le retire du flux (n'occupe pas la place qui lui était dédié initialement lors du chargement)
element.style.display = "block"; // ou flex, grid affiche l'élément
element.hidden = true;  // ou false
element.style.opacity = 0;
element.style.visibility = "hidden"; // l'élément reste dans le flux mais est invisible


//[Réduire / Agrandir ] : propriétés width et height ou la mise à l'échelle avec la propriété scale
element.style.width = '160px';
element.style.height = '90px';

element.style.transform = "scale(0.5)";
              
Exercice

Atelier 7.1

Les styles CSS
Correction exercice

Correction Atelier 7.1

Les styles CSS
Chapitre 08

Requêtes avec un serveur

5 notions
Avant de commencer

Quelles sont vos connaissances sur les requêtes avec un serveur ?

Chapitre 08 · Requêtes avec un serveur
Historique.ajaxajax()

Présentation et historique d'Ajax

Comprendre 1 / 4

Ajax pour Asynchronous JavaScript and XML

  • Permet d'échanger des données avec un serveur en arrière-plan et de mettre à jour dynamiquement une partie d'une page web sans la nécessité de recharger completèment la page courante
  • Popularisé en 2005, une révolution qui a rendu les applications web plus interactives
  • Le terme XML désigne le format d'échange des données entre le client et le serveur, aujourd'hui les échanges s'effectuent quasi-exclusivement au format JSON (JavaScript Object Notation)

Chapitre 08 · Requêtes avec un serveur
ActiveX.toString()

ActiveX

Comprendre 2 / 4

Technologie propriétaire de Microsoft introduite dans Internet Explorer pour intégrer des composants natifs de Windows dans une page Web et communiquer avec un serveur.

  • Avant la standardisation W3C, le tout premier objet permettant d'effectuer des requêtes HTTP asynchrones dans le navigateur était l'objet ActiveXObject, spécifique à l'écosystème Windows
  • Totalement abandonné aujourd'hui au profit des standards ouverts du web

// 1. Création
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
// 2. Requête vers le serveur
xhr.open("GET", "data.xml", true);
// 3. Traitement de la réponse du serveur
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) { // 4 = Requête terminée et réponse prête
    if (xhr.status == 200) { // 200 = Succès HTTP
      alert("Réponse du serveur : " + xhr.responseText);
    } else {
      console.log("Erreur lors de la requête : " + xhr.status);
    }
  }
};
// 4. Envoi effectif de la requête au serveur
xhr.send(null);

// Manipuler Excel via le navigateur 
function lancerExcel() {
  var excelApp, excelBook, excelSheet;
  // Création de l'objet ActiveX Excel
  excelApp = new ActiveXObject("Excel.Application");
  excelApp.Visible = true; // Rendre l'application visible
  // Ajouter un nouveau classeur et récupérer la feuille active
  excelBook = excelApp.Workbooks.Add();
  excelSheet = excelBook.ActiveSheet;
  // Écrire du texte dans la cellule A1
  excelSheet.Cells(1, 1).Value = "JavaScript ActiveX !";
}
              
Chapitre 08 · Requêtes avec un serveur
XMLHttpRequest.toString()

XMLHttpRequest

Comprendre 3 / 4

Initialement développé par Microsoft pour unifier la réalisation de requêtes HTTP asynchrones de manière inter-navigateurs.
Basé sur une machine à états (readyState) et des écouteurs d'événements.
Syntaxe lourde, gestion des erreurs complexe et tendance naturelle au code imbriqué (callback hell).

De nos jours, cet objet est largement moins utilisé, mais est toujours supporté par les navigateurs.

  • Les méthodes
    • .abort() : annule la requête en cours
    • .getResponseHeaders() : headers (en-têtes)
    • .open(method, url, boolean) : démarre la requête avec une méthode HTTP, l'URL du serveur et le mode synchrone (false) ou asynchrone (true)
    • .send(data) : envoie des données au serveur.
  • La propriété .readyState
    • 0 : non initialisé, la méthode .open() n' a pas encore été appelée
    • 1 : initialisé, la méthode .send() n'a pas encore été appelée
    • 2 : headers (en-têtes de réponse) disponibles
    • 3 : body (données reçues) partiellement disponible
    • 4 : body entièrement disponible
  • La propriété .status (Code HTTP du retour du serveur sur la requête effectuée)
    x est un chiffre spécifique au type d'erreur par exemple 404 ressource non trouvée, 403 autorisation requise, etc.
    • 20x: OK
    • 40x : erreur côté client (navigateur)
    • 50x : erreur côté serveur
  • Propriété .responseText : obtenir les données renvoyées par le serveur au format texte brut.
  • Propriété .responseXML : obtenir les données renvoyées par le serveur au format XML.
Chapitre 08 · Requêtes avec un serveur
XMLHttpRequest.toString()

XMLHttpRequest

Faire 3 / 4

const xhr = new XMLHttpRequest();
xhr.open("GET", "https://jsonplaceholder.typicode.com/users", true);
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4 && xhr.status === 200) {
    const data = JSON.parse(xhr.responseText);
    console.log("utilisateurs", data);
  }
};
xhr.send();
              
Chapitre 08 · Requêtes avec un serveur
Fetch.toString()

Fetch

Comprendre 4 / 4
  • Méthode de prédilection permettant d'effectuer des traitements asynchrones vers un serveur local ou distant
  • fetch() est une notation simplifée d'une promesse(Promise) avec du sucre syntaxique
  • Les specificités de fetch() par rapport à une Promesse classique
    1. fetch() ne rejette la promesse qu'en cas d'erreur réseau (pas de connexion).
      Il convient d'avoir une étape intermédiaire pour vérifier que le serveur répond favorable
    2. Les codes HTTP 40x ou 50x ne sont pas considérés comme un échec pour l'API fetch()
    3. Gère les en-têtes HTTP grâce à un objet Headers que l'on peut passer dans les options (2ème paramètre de la fonction)
  • La méthode fetch() prend :
    • En premier paramètre, un URL (obligatoire)
    • En second paramètre, un objet contenant des options. Dans les options, on peut indiquer la méthode HTTP, les informations d'en-têtes (headers), le cache etc.
Promises Chaining Doc. MDN Promise Doc. API fetch Source image @Pawan Kumar
Chapitre 08 · Requêtes avec un serveur
Fetch.toString()

Fetch

Faire 4 / 4

const REMOTE_URL = 'https://jsonplaceholder.typicode.com/posts'; 
// Récupérer les données
fetch(REMOTE_URL) // par défaut GET
  .then(res => res.json()) // transforme le corps (body) de la réponse en données JSON exploitable et renvoie une promesse
  .then(data => console.log('posts', data))
  .catch(error => console.log('[ERROR]', error));

// Envoyer des données avec la méthode POST et les headers (2ème paramètre)
fetch(REMOTE_URL, {
  method: 'POST', // valeurs possibles GET (par défaut), POST, PUT et DELETE
  // Données attendues par le serveur toujours en chaîne de caractère (sérialisation de l'objet)
  body: JSON.stringify({
    title: 'Cours sur JavaScript fondamentaux',
    body: 'Top 😉',
    userId: 1,
  }),
  headers: {
    'Content-type': 'application/json; charset=UTF-8',
  },
})
  .then((response) => response.json())
  .then((json) => console.log('réponse du serveur', json))
  .catch(error => console.log('[KO]', error));

              
Exercice

Atelier 8.1

Requêtes avec un serveur
Correction exercice

Correction Atelier 8.1

Requêtes avec un serveur
Chapitre 09

Introduction à JQuery

6 notions
Avant de commencer

Quelles sont vos connaissances sur la librairie JQuery ?

Chapitre 09 · Introduction à JQuery
$.toString()

Présentation de la librairie

Comprendre 1 / 6
  • Développé en 2006 par John Resig (Mozilla)
  • Bibliothèque JavaScript "write less, do more" :
    • Rapide, léger et code moins verbeux (moins de code) pour manipuler le DOM et apporte des nouvelles fonctionnalités (simplification du code)
    • Règle le problème de compatibilité de JavaScript avec les navigateurs, ce qui a fait son succès et sa popularité auprès de la communauté JS durant la décennie précédente.
    • Aujourd'hui, surpassé par les multiples frameworks ou librairies tels que React, Vue JS, Angular, Astro, Anime, Three.js, Velocity etc. et l'évolution de JavaScript lui-même.
    • Dernière version 4.0.0 de 2026 (l'avant dernière version datait de 2021)
  • Téléchargement :
    • Via le site officiel https://jquery.com/download/ en sauvegardant la libraire en local dans un fichier JavaScript.
    • Via les Content Delivery Network (CDN) de Google ou CloudFare
    • Via NPM ou YARN (des gestionnaires de dépendances de Node)
    • Via un téléchargement en local de la bibliothèque
  • Son point d'entrée unique est la fonction globale $ (ou jQuery), qui renvoie un objet enveloppant un ou plusieurs éléments du DOM (jQuery collection).

$(function () {

  // [INSTALLATION]
  // npm
  npm install jquery
  // Ou yarn
  yarn add jquery
  // Ou CDNs à placer dans le <header;> ou juste avant </body>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/4.0.0/jquery.min.js"></script>
  // Ou local
  <script src="./src/lib/jquery.min.js"></script>
  
  // [UTILISATION]
  // Interne
  <script>
  $(document).ready(function() {
    // Votre code jQuery ici
  });
  
  // Ou ersion raccourcie moderne
  $(function() {
    // Votre code jQuery ici
  });
  </script>
  
  // Externe
  <script src="./js/my-script.js"></script>
  // [CONTENU] ./js/my-script.js
  $(document).ready(function() {
    // Votre code jQuery ici
  });
  // Ou ersion raccourcie moderne
  $(function() {
    // Votre code jQuery ici
  });
});
              
Chapitre 09 · Introduction à JQuery
$.dom()

Manipulation du DOM (sélection, création, modification, suppression de noeuds)

Comprendre 2 / 6
  • La variable globale JQuery et son alias $ sont disponibles de manière globale ou via un import à partir du fichier source de la librairie.
  • Tous les sélecteurs CSS peuvent être utilisés en argument de la fonction $() pour sélectionner des éléments du DOM.
  • Sélection : $.(selecteurCSS)
  • Modification et insertion :
    • .html() : récupère le contenu HTML du premier élément de la liste.
    • .html(code) : remplace le contenu des éléments de la liste par le code HTML.
    • .value : récupère la valeur du premier élément.
    • .value(val) : affecte la valeur val à tous les éléments.
    • .text() : récupère les noeuds textuels de tous les éléments descendants.
    • .text(content) : affecte le contenu textuel content à tous les éléments.
    • .append(code) : ajoute le code HTML à la fin de chaque élément de la liste.
    • .prepend(code) : ajoute le code HTML au début de chaque élément de la liste.
    • $parent.append($element) : ajoute à la fin.
    • $parent.prepend($element) : ajoute au début.
    • $element.text("Texte") ou $element.html("<span>HTML<span>") : modifie le contenu.
    • $input.val("Valeur") : lit ou écrit la valeur d'un champ de formulaire.
  • Suppression :
    • $element.remove() : supprime l'élément et ses écouteurs d'événements.
    • $element.empty() : vide le contenu de l'élément.
Chapitre 09 · Introduction à JQuery
$.dom()

Manipulation du DOM (sélection, création, modification, suppression de noeuds)

Faire 2 / 6

$(function () {
  // Sélectionner et remplacer
  $("h1").replaceWith("<div>Hello</div>");
  // Ajouter éléments li dans ul
  $("<li>").html("item 9").appendTo("ul");
  $("<li>").html("item 1").prependTo("ul");
  
  // Affecter la valeur true à l'attribut HTML required de tous les input
  $('input').attr("required", true)
  
  // Affecter les attributs et les valeurs ci-dessous dans une seule notation
  $("img").attr({
    "src" : "images/smiley.jpg",
    "alt" : "Smiley",
    "width" : 10,
    "height" : 10
  }
  );
  // Lit la valeur de la case cochée
  $("input:checkbox:checked").val();
  // Définit la valeur de l'input subject
  $(":text[name='subject']").val("Convocation");
  // Affecte un tableau de valeurs à country
  $("#country").val(["FR", "BE", "ES"]);
  // Récupère le contenu de div.b pour l'insérer dans la div.a
  $("div.a").text($("div.b").html());
  // Supprime les enfants du parent #container
  $("#container").empty();
  // supprime l'élément h1
  $("h1").remove();
});
              
Chapitre 09 · Introduction à JQuery
$.events()

Gestion des événements

Comprendre 3 / 6
  • .on(event, callback) : identique à document.addEventListener()
  • .off() : supprime les gestionnaires d'événements de tous les éléments
  • .trigger(event) : déclenche l'événement event sur tous les éléments
  • .bind(event, callback) : identique à on(event, callback), ancienne méthode déprécié (supprimé) depuis la version 3+
  • .unbind(event) : identique à off(event), ancienne méthode également déprécié depuis v3+
  • Les méthodes pour l'asynchrone
    • $.ajax() : globale pour toute requête asynchrone
    • $.get() : spécifique pour une requête via la méthode HTTP GET
    • $.post() : spécifique pour une requête via HTTP POST
    • Les méthodes précédentes à combiner avec les méthodes ci-dessous
      • .done(callback) permet d'obtenir le résultat en cas de succès.
      • .fail(callback) permet de capturer une erreur survenue au cours du traitement de la requête.
      • .always(callback) s'exécute dans les cas
Chapitre 09 · Introduction à JQuery
$.events()

Gestion des événements

Faire 3 / 6

$(function () {
  // S'exécutera toujours
  $("div").on("click", fn);
  // s'exécutera une seule fois
  $("div").one("click", fn);
  // Détacher un événement
  $("div").off("click", fn);
  // Déclencher un événement
  $("div").trigger("click");
  
  // Évite que l'évènement courant ne se propage plus loin
  function clickHandler(e) {
    e.stopPropagation();
  }
  // Empêche les autres événements du même type d'être appelés pour le même élément
  function clickHandler(e) {
    e.stopImmediatePropagation();
  }
  // renvoie juste false
  function clickHandler(e) {return false;}
  
  // Attachement moderne (.on()) :
  $("#mon-bouton").on("click", (event) => {
    console.log("Clic détecté");
  });
  // Délégation d'événements permet d'écouter les événements sur des éléments futurs ou dynamiques via un ancêtre commun
  $("#container").on("click", "li", function() {
    $(this).toggleClass("active");
  });
})

// [ASYNCHRONE]
$(function () {
  $.ajax({
    type: "GET",
    url: "https://jsonplaceholder.typicode.com/users"
  })
    .done(function(users) {
      console.log( "Réponse $.ajax(), total users : ", users.length );
    })
    .fail(function(Error) {
      console.log( "Error $.ajax()", error);
    })
    .always(function() {
      console.log( "Finished $.ajax()" );
    });

  $.get( "https://jsonplaceholder.typicode.com/albums", function() {
    console.log( "Success $.get()" );
  })
    .done(function(albums) {
      console.log( "Total albums : ", albums.length);
    })
    .fail(function(error) {
      console.log( "Error $.get()", error );
    })
    .always(function() {
      console.log( "finished $.get()" );
    });

    $.post( "https://jsonplaceholder.typicode.com/posts",  
      { userId: 1, title: "Démo $.post()", body: "Ceci est une démo" }
    )
      .done(function(newPost) {
        console.log( "Réponse $.post() : ", newPost );
      })
      .fail(function(error) {
        console.log( "Error $.post()", error);
      })
      .always(function() {
        console.log( "Finished $.post()" );
      });
  });

            
Chapitre 09 · Introduction à JQuery
$.animations()

Création d'effets / animation

Comprendre 4 / 6

La bibliothèque intègre nativement des animations fluides sans avoir à manipuler directement les feuilles de style de transition :

  • Affichage / Masquage : .show(), .hide(), .toggle()
  • Fondu (Fade) : .fadeIn(), .fadeOut(), .fadeToggle()
  • Glissement (Slide) : .slideUp(), .slideDown(), .slideToggle()

Les méthodes :

  • .show(duration?) : apparition progressive de l'élément durant la durée duration.
  • .hide(duration?) : disparation progressive de l'élément durant la durée duration.
  • .toggle(duration?) : apparition/disparition alternée selon la valeur de la propriété CSS display.
  • .fadeIn(duration?) : similaire à show mais avec l'évolution de la propriété CSS opacity de 0 à 1. Effet de fondu.
  • .fadeOut(duration?) : opacité de 1 à 0.
  • .fadeToggle(duration?) : alterne selon la valeur de la propriété CSS opacity.
  • .animate(newProperties, options) : avec newProperties un objet contenant les nouvelles propriétés CSS à remplacer progressivement par les anciennes valeurs en tenant compte des options.
    options, un objet ayant les propriétés : durée, élasticité de l'animation, etc.

PS : duration? signifie que le paramètre est optionnel. Par défaut il vaut 0ms, ce qui provoque un effet instantané.

Chapitre 09 · Introduction à JQuery
$.animations()

Création d'effets / animation

Faire 4 / 6
💡 À retenir : la durée est toujours millisecondes (ms) !


$(function(){
  $("div").show(); // affiche simpleùent
  $("div").show("slow"); // affiche lentement, slow=600ms
  $("div").hide("fast"); // cache rapidement, fast=200ms
  $("div").toggle(100); // cache ou affiche en 100ms
  $("div").slideUp(); // affiche avec une animation de bas en haut
  $("div").slideDown("fast"); // affiche avec une animation de haut en bas
  $("div").slideToggle(1000); // affiche ou cache avec une animation haut/bas
  $("div").fadeIn("fast"); // affiche avec une animation de fondu entrée
  $("div").fadeOut("normal"); // affiche avec une animation fondu sortie
  $("div").fadeTo ("fast", 0.5); // fondu avec un paramètre d'opacité

  // Animations personnalisées .animate(options, durée)
  $("div").animate(
    {
      width: "90%",
      opacity: 0.5,
      borderWidth: "5px"
    }, 
    1000
  );
  // Plusieurs animations qui vont s'exécuté à la chaîne
  $("div").animate({width: "90%"}, 100)
    .animate({opacity: 0.5},200)
    .animate({borderWidth: "5px"});
    $(".box").animate(
      {
        left: "250px",
        opacity: 0.5
      },
    1000
  );
})
              
Chapitre 09 · Introduction à JQuery
$.styles()

Modification des styles

Faire 5 / 6

$(function(){
  $("div").css("background-color"); // Obtient la valeur du style
  $("div").css("float", "left"); // définit la valeur du style
  $("div").css(
    {
      "color":"blue",
      "padding": "1em",
      "margin-right": "0",
      marginLeft: "10px"
    }
  ); // lit la hauteur de la fenêtre
  
  const winHeight = $(window).height(); // définit la hauteur de la fenêtre
  $("#main").height(winHeight);
  //.width() : element
  //.innerWidth() : .width() + padding
  //.outerWidth() : .innerWidth() + border
  //.outerWidth(true) : inclue margin

  // Modifications des classes
  $("#main").hasClass("active") : retourne un booléen
  $("#main").addClass("fade-in") : ajoute la classe fade-in
  $("#main").removeClass('fade-out') : supprime la classe fade-out
  $("#main").toogleClass('active') : ajoute/supprime la classe active
});
              
Chapitre 09 · Introduction à JQuery
.()

"Unobstrusive JavaScript" avec jQuery

Comprendre 6 / 6

Le JavaScript non obstructif consiste à séparer strictement le comportement de la structure HTML.
Avec jQuery, cela se traduit par :

  • L'attente du chargement complet du DOM avant d'exécuter le code, traditionnellement via : $(document).ready(function() { // Code exécuté une fois le DOM prêt });
  • (Ou sa forme courte : $(function() { ... });)
Exercice

Atelier 9.1

Introduction à JQuery
Correction exercice

Correction Atelier 9.1

Introduction à JQuery
Travaux pratiques

TP Validation des acquis

Fondamentaux de JavaScript
Fin

Merci.

vous savez programmer en JavaScript en utilisant les concepts de base du langage de programmation.

Cours.fin()

Avec Glodie Tshimini

Ce support de cours est protégé par le droit d'auteur.

Toute reproduction, représentation, diffusion ou rediffusion, totale ou partielle, sur quelque support que ce soit, est strictement interdite sans l'accord express de l'auteur.

© Glodie Tshimini, 2026 - Tous droits réservés.