Introduction à JavaScript et DOM
Introduction à JavaScript et DOM
Site Interactif
JavaScript
1. Rappel
1. Notions de base du Web
2. Les Bases de la programmation côté client
3. Les Bases du Langage JavaScript
4. Manipulation du DOM
5. Le BOM (Browser Object Model)
6. Les Evénements
2
Programmation Avancée (PRAVAN)
1
Rappel
3
Programmation Avancée (PRAVAN)
1- Rappel
Quels types de site pourrait-on créer avec HTML et CSS seulement ?
Sites Statiques
4
Programmation Avancée (PRAVAN)
1- Rappel
Quels types de site pourrait-on créer avec HTML et CSS seulement ?
Sites Statiques
De quelle interactivité
parle-ton ?
5
Programmation Avancée (PRAVAN)
1- Rappel
Quels types de site pourrait-on créer avec HTML et CSS seulement ?
De quelle interactivité
parle-ton ?
Réaction
6
Programmation Avancée (PRAVAN)
1- Rappel
Quels types de site pourrait-on créer avec HTML et CSS seulement ?
2
Les Bases
de la programmation
côté client
11
Programmation Avancée (PRAVAN)
2- Les Bases de la programmation côté client
HTML
2
un élément H1 "Compteur=0"
3
1 et un élément Button (bouton)
Prenons l'exemple suivant. "Incrémenter"
Nous avons donc un code
HTML qui contient:
12
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le
comportement suivant bouton "Incrémenter", le compteur
2- Les Bases de la programmation côté client s’incrémente de 1, et si on dépasse 5,
il devient rouge.
HTML
….
13
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le
comportement suivant bouton "Incrémenter", le compteur
2- Les Bases de la programmation côté client s’incrémente de 1, et si on dépasse 5,
il devient rouge.
HTML
Script JS
….
Ce comportement doit
être programmé dans un
script JS (JavaScript).
14
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le
comportement suivant bouton "Incrémenter", le compteur
2- Les Bases de la programmation côté client s’incrémente de 1, et si on dépasse 5,
il devient rouge.
HTML
Script JS
….
Ce comportement doit
être programmé dans un
script JS (JavaScript).
15
Programmation Avancée (PRAVAN) lorsque l’utilisateur clique sur le
bouton "Incrémenter", le compteur
2- Les Bases de la programmation côté client s’incrémente de 1, et si on dépasse 5,
il devient rouge.
HTML
Décortiquons un peu ce
comportement
Script JS
….
16
Programmation Avancée (PRAVAN) Décortiquons un peu ce lorsque l’utilisateur clique sur le
comportement bouton "Incrémenter", le compteur
2- Les Bases de la programmation côté client s’incrémente de 1, et si on dépasse 5,
il devient rouge.
Evénement
HTML lorsque l’utilisateur clique sur le
bouton "Incrémenter",
Script JS
….
17
Programmation Avancée (PRAVAN) Décortiquons un peu ce lorsque l’utilisateur clique sur le
comportement bouton "Incrémenter", le compteur
2- Les Bases de la programmation côté client s’incrémente de 1, et si on dépasse 5,
il devient rouge.
Evénement
HTML lorsque l’utilisateur clique sur le
bouton "Incrémenter",
Traitement
le compteur s’incrémente de 1
Changement visuel
Script JS
….
Nous précisons quoi faire quand cet
événement se réalise (au clic):
Ici, c’est le traitement doIncrement
qui est exécuté (qui est une
fonction).
Traitement
le compteur s’incrémente de 1
Changement visuel
Script JS
….
Traitement
et si on dépasse 5, il devient rouge.
Changement visuel
Changement visuel
On sélectionne un élément HTML (presque
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
Plusieurs types de traitements sont contenu de l’élément.
possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation.
affectations, comparaisons, tableaux, etc.
En langage JavaScript.
20
Programmation Avancée (PRAVAN)
2- Les Bases de la programmation côté client
Résumons
Visuel
Evénement
HTML
Quelque chose se passe:
Plusieurs événements sont
possibles, par exemple:
onclick (au clic),
onmouseover (au survol),
onload (au chargement de
la page), etc.
Changement visuel
On sélectionne un élément HTML (presque
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
Plusieurs types de traitements sont contenu de l’élément.
possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation
affectations, comparaisons, tableaux, etc.
Méthode 1: Enligne
22
Programmation Avancée (PRAVAN)
2- Les Bases de la programmation côté client Où mettre les Scripts ?
Méthode 1: Enligne
23
Programmation Avancée (PRAVAN)
2- Les Bases de la programmation côté client Où mettre les Scripts ?
25
Programmation Avancée (PRAVAN)
2- Les Bases de la programmation côté client Où mettre les Scripts ?
Méthode 1: Enligne
Erreur fréquente de débutant Méthode 3: Fichier JS
26
Programmation Avancée (PRAVAN)
2- Les Bases de la programmation côté client Où mettre les Scripts ?
Méthode 1: Enligne
Solutions possibles Méthode 3: Fichier JS
1
Vous pouvez différer l’exécution de [Link]
après le chargement de la page.
Visuel
Evénement
HTML
Quelque chose se passe:
Plusieurs événements sont
possibles, par exemple:
onclick (au clic),
onmouseover (au survol),
onload (au chargement de
la page), etc.
Changement visuel
Nous allons
On sélectionne un élément HTML (presque
décortiquer
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
Plusieurs types de traitements sont contenu de l’élément.
possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation.
affectations, comparaisons, tableaux, etc.
En langage JavaScript.
28
Programmation Avancée (PRAVAN)
2- Les Bases de la programmation côté client
Changement visuel
Nous allons
On sélectionne un élément HTML (presque
décortiquer
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
Plusieurs types de traitements sont contenu de l’élément.
possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation
affectations, comparaisons, tableaux, etc.
En langage JavaScript.
29
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
C’est quoi ?
JavaScript est principalement un langage
de programmation côté client.
Historique
• JavaScript (anciennement ECMAScript) a été créé par Netscape (le fameux navigateur Web),en 1995.
• But: Permettre aux développeurs Web d’incorporer un code exécutable dans leurs pages Web.
• Effet: Une page Web pouvait donc contenir un script en JavaScript, qui est exécuté quand l’utilisateur
visite la page (interactivité ou traitement).
30
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
4 composant principaux:
1. Event Loop
2. Stack (pile d’appels): Syncrhone
3. Heap (tas de mémoire):
4. Callback Queue (file): Asynchrone
Déroulement:
1. L’Event Loop (la boucle d’événements, sur le thread principal)
exécute le code JavaScript ligne par ligne dans la Call Stack.
2. Les objets et variables sont stockés dans la Heap memory.
3. Lorsqu’une opération asynchrone est rencontrée (par ex.
setTimeout, appel à une API, événement DOM), elle est
déléguée à l’environnement du navigateur (les Web APIs).
4. Quand cette opération est terminée, son callback est placé
dans la Callback Queue (ou Task Queue).
5. L’Event Loop surveille en permanence la Call Stack :
dès qu’elle est vide, il y récupère la prochaine tâche de la
Callback Queue pour l’exécuter.
32
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript Comme avec tout langage de programmation, en
JavaScript, il y a aussi la console qu’on peut utiliser pour
Familiarités avec les langages de programmation afficher (on écrit: [Link]("text à afficher")).
Contrairement au langage C ou Java, en JavaScript il n’y a pas de notion de Le console est accessible dans n’importe quel
fonction principale (la fameuse fonction main()). navigateur. Par exemple, ici, on a ouvert la page
[Link], puis les outils de développement, puis
A la place, le navigateur interprète et exécute le code de haut vers le bas, l’onglet Console.
et compris les fichiers JS externes.
Recommandé lorsqu’on fait des teste (ex. les valeurs
des variables).
33
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
innerHTML/innerText Alert()
34
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS
1. Syntaxe
2. Variables et Constantes
3. Les opérateurs
4. Les conditions
5. Les boucles
6. Les fonctions
35
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 1. Syntaxe
36
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 2. Variables et Constantes Les Types primitifs
String
number
boolean
null
> Console
37
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 2. Variables et Constantes Les Types Complexes
Méthodes utiles
Les Tableaux
> Console
Destructuration
38
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 2. Variables et Constantes Les Types Complexes
Les Objets Dans JS pratiquement tout repose sur les objets: les tableaux, les fonctions, même les classes sont en fait des objets.
Destructuration
// accès à nom
// accès à age
> Console
39
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 2. Variables et Constantes Les Types Complexes
Tableau d’Objets
40
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 3. Les Opérateurs
Opérateurs combiné
41
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 4. Les Conditions If…else
42
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 4. Les Conditions switch
43
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 5. Les Boucles
44
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 6. Les Fonctions
45
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 6. Les Fonctions
Définir une valeur par défaut pour le paramètre Fonction anonyme et invoquée immédiatement
Non Hoistée
This du parent
Réutilisable
Utile pour les callbacks
46
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 6. Les Fonctions Fonctions de rappel (Callbacks)
Un callback est une fonction passée en paramètre à une autre fonction, et appelée plus tard.
47
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 6. Les Fonctions Promesses (Promise)
Une Promise est un objet qui représente une opération asynchrone.
C’est comme un contrat : « Je te promets que je te rendrai un résultat (ou une erreur), mais plus tard. »
Code principal
Attente des résultats…
promesse
Code principal f ()
Je fais autre chose…
Résolve/Reject
(succès ou echec)
Code principal
Données reçues
48
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 6. Les Fonctions Async/Await
Une façon plus lisible d’écrire un code asynchrone.
Code principal
Attente des résultats…
promesse
Code principal f ()
Je fais autre chose…
Résolve/Reject
(succès ou echec)
Code principal
Données reçues
49
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 7. Portée d’une variable Globale vs Locale
50
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Noyau du langage JS 7. Portée d’une variable Globale vs Locale Let, Const, Var
Initialiser une variable sans la préfixer par Let ou Const ou Var est une mauvaise pratique.
Elle aura une portée globale implicite, même dans un bloc.
Pour ne pas se tromper, on utilise le mode stricte, qui nous Dans les anciennes version de JS, on utilisait le mot
signale les variables non définie avec Let, ou Const, ou Var: clé var.
51
Programmation Avancée (PRAVAN)
Changement visuel
Nous allons
On sélectionne un élément HTML (presque
décortiquer
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
Plusieurs types de traitements sont contenu de l’élément.
possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation
affectations, comparaisons, tableaux, etc.
En langage JavaScript.
52
Programmation Avancée (PRAVAN)
Visuel
Evénement
HTML
Quelque chose se passe:
Plusieurs événements sont
possibles, par exemple:
onclick (au clic),
onmouseover (au survol),
onload (au chargement de
la page), etc.
Changement visuel
Nous allons
On sélectionne un élément HTML (presque
décortiquer
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
Plusieurs types de traitements sont contenu de l’élément.
possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation.
affectations, comparaisons, tableaux, etc.
En langage JavaScript.
53
Programmation Avancée (PRAVAN)
Visuel
Evénement
HTML
Quelque chose se passe:
Plusieurs événements sont
possibles, par exemple:
onclick (au clic),
onmouseover (au survol),
onload (au chargement de
Changement visuel
Il est important de comprendre Nous allons
On sélectionne un élément HTML (presque
décortiquer
le DOM, pour savoir comment
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
sélectionner un élément HTML
Plusieurs types de traitements sont contenu de l’élément.
et comment le modifier. possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation.
affectations, comparaisons, tableaux, etc.
En langage JavaScript.
54
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Rappel: Structure d’un document HTML La racine
HTML
Document HTML
head body
<html>
<head>
</head> …. p p
<body>
<p>
…. ….
Bienvenue sur <strong>Bingo</strong>, le site
de <em>formation</em>. Un modèle en ARBRE
</p>
<p> Aujourd’hui nous allons parler de HTML. </p>
</body>
Le DOM: Document Object Model
</html>
55
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le DOM (Document Object Model)
56
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le DOM (Document Object Model)
HTML
Dans cet exemple, nous
avons d’abord retrouvé
l’élément h1, avec son
identifiant "compt_H1", et
nous avons changé son
contenu.
Script JS
….
Il existe plusieurs
Ici, nous avons changé son manières pour retrouver
style CSS un élément HTML.
58
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML
Par identifiant
Par class
Il existe plusieurs
manières pour retrouver
un élément HTML.
59
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML
Par identifiant
Par class
60
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par identifiant
document
HTML
h1 h2 h2 h2 p p
1
Je veux le
modifier
getElementById(<id>)
Retourne un seul élément qui possède l’identifiant id indiqué
61
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par identifiant
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec son id
getElementById(<id>)
Retourne un seul élément qui possède l’identifiant id indiqué
3
On commence toujours par "document", car c’est lui la racine 62
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par identifiant
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec son id
getElementById(<id>)
Retourne un seul élément qui possède l’identifiant id indiqué
4
L’élément récupéré est un objet qui
possède des propriété et des
méthodes. "innerHTML" est une
propriété qui renferme le contenu de
l’élément. Donc la modifier, permettra
3 d’avoir une différence au visuel dans la
On commence toujours par "document", car c’est lui la racine page Web. 63
Programmation Avancée (PRAVAN)
L’élément touché par la modification
4- Manipulation du DOM Après clique sur bouton "Exécuter
Script", qui déclenche la fonction
doTraitement()
Retrouver un élément HTML Par identifiant 5
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec son id
getElementById(<id>)
Retourne un seul élément qui possède l’identifiant id indiqué
4
L’élément récupéré est un objet qui
possède des propriété et des
méthodes. "innerHTML" est une
propriété qui renferme le contenu de
l’élément. Donc la modifier, permettra
3 d’avoir une différence au visuel dans la
On commence toujours par "document", car c’est lui la racine page Web. 64
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML
Par identifiant
Par class
65
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par le nom de balise
document
HTML
h1 h2 h2 h2 p p
1
Je veux le
modifier
getElementsByTagName(<tag>)
Retourne toujours une collection d’éléments d’une balise données
66
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par le nom de balise
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec le nom balise
getElementsByTagName(<tag>)
Retourne toujours une collection d’éléments d’une balise données
67
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par le nom de balise
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec le nom balise
getElementsByTagName(<tag>)
Retourne toujours une collection d’éléments d’une balise données
3
Même s’il y a un seul h1 dans notre page
HTML, la méthode getElementsByTagName
retourne toujours une collection.
Dans notre cas, la collection contiendra un seul
élément h1, et pour le retrouver, on lit le
premier item de cet collection, avec [0] (car
une collection commence de l’index 0) 68
Programmation Avancée (PRAVAN)
L’élément touché par la modification
4- Manipulation du DOM Après clique sur bouton "Exécuter
Script", qui déclenche la fonction
doTraitement()
Retrouver un élément HTML Par le nom de balise 4
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec le nom balise
getElementsByTagName(<tag>)
Retourne toujours une collection d’éléments d’une balise données
3
Même s’il y a un seul h1 dans notre page
HTML, la méthode getElementsByTagName
retourne toujours une collection.
Dans notre cas, la collection contiendra un seul
élément h1, et pour le retrouver, on lit le
premier item de cet collection, avec [0] (car
une collection commence de l’index 0) 69
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML
Par identifiant
Par class
70
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par class
document
HTML
h1 h2 h2 h2 p p
1
Je veux le
modifier
getElementsByClassName(<class>)
Retourne toujours une collection d’éléments d’une classe données
71
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par class
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec le nom classe
getElementsByClassName(<class>)
Retourne toujours une collection d’éléments d’une classe données
72
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par class
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec le nom classe
getElementsByClassName(<class>)
Retourne toujours une collection d’éléments d’une classe données
3
Dans notre cas, la collection contiendra un seul
élément p, et pour le retrouver, on lit le
premier item de cet collection, avec [0] (car
une collection commence de l’index 0)
73
Programmation Avancée (PRAVAN)
L’élément touché par la modification
4- Manipulation du DOM Après clique sur bouton "Exécuter
Script", qui déclenche la fonction
doTraitement()
Retrouver un élément HTML Par class 4
document
HTML
h1 h2 h2 h2 p p
1 2
Je veux le Je peux le retrouver
modifier avec le nom classe
getElementsByClassName(<class>)
Retourne toujours une collection d’éléments d’une classe données
3
Dans notre cas, la collection contiendra un seul
élément p, et pour le retrouver, on lit le
premier item de cet collection, avec [0] (car
une collection commence de l’index 0)
74
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML
Par identifiant
Par class
75
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par sélecteur CSS
1
Je veux le
modifier
querySelectorAll(<sélecteur>)
Retourne toujours une collection d’éléments d’un sélecteur donné
76
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML Par sélecteur CSS
1 2
Je veux le Je peux le retrouver
modifier avec un Sélecteur CSS
querySelectorAll(<sélecteur>)
Retourne toujours une collection d’éléments d’un sélecteur donné
77
Programmation Avancée (PRAVAN)
L’élément touché par la modification
4- Manipulation du DOM Après clique sur bouton "Exécuter
Script", qui déclenche la fonction
doTraitement()
Retrouver un élément HTML Par sélecteur CSS
3
1 2
Je veux le Je peux le retrouver
modifier avec un Sélecteur CSS
querySelectorAll(<sélecteur>)
Retourne toujours une collection d’éléments d’un sélecteur donné
78
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver plusieurs éléments HTML
Par identifiant
Jusqu’à présent, on n’a vu que
Par le nom de balise l’exemple avec un seul élément
récupéré…
Par class ….Mais, imaginons que ma sélection
retourne plusieurs éléments
Par sélecteur CSS
79
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver plusieurs éléments HTML
1
Je veux les
modifier
getElementsByTagName(<tag>)
Retourne toujours une collection d’éléments d’une balise données
80
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver plusieurs éléments HTML
1 2
Je veux les Je peux les retrouver
modifier avec le nom Balise h2
getElementsByTagName(<tag>)
Retourne toujours une collection d’éléments d’une balise données
81
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver plusieurs éléments HTML
1 2
Je veux les Je peux les retrouver
modifier avec le nom Balise h2
getElementsByTagName(<tag>)
Retourne toujours une collection d’éléments d’une balise données
3
Comme getElementsByTagName retourne
toujours une collection, et ma collection
contient les 3 élément h2 présent dans mon
document HTML, je dois faire une boucle pour
parcourir la sélection, et faire mon traitement.
82
Programmation Avancée (PRAVAN)
L’élément touché par la modification
4- Manipulation du DOM Après clique sur bouton "Exécuter
Script", qui déclenche la fonction
doTraitement()
Retrouver plusieurs éléments HTML 4
1 2
Je veux les Je peux les retrouver
modifier avec le nom Balise h2
getElementsByTagName(<tag>)
Retourne toujours une collection d’éléments d’une balise données
3
Comme getElementsByTagName retourne
toujours une collection, et ma collection
contient les 3 élément h2 présent dans mon
document HTML, je dois faire une boucle pour
parcourir la sélection, et faire mon traitement.
83
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Retrouver un élément HTML
Par identifiant
Par class
84
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
85
Programmation Avancée (PRAVAN) D’abord, il faut savoir qu’en JavaScript, un élément HTML
est un objet qui possède des propriétés et des méthodes
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
lastElementChild appendChild()
nextElementSibling replaceChild()
86
Programmation Avancée (PRAVAN) D’abord, il faut savoir qu’en JavaScript, un élément HTML
est un objet qui possède des propriétés et des méthodes
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
87
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
88
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
parentNode
parentNode
children
Ces propriétés permettent nextElementSibling
firstElementChild la navigation dans l’arbre,
par rapport à l’élément
lastElementChild récupéré
nextElementSibling
children
Exemple:
Si l’élément récupéré c’est body.
La propriété children de cet élément
donnera la collection d’élément h1, p, p
89
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
lastElementChild appendChild()
nextElementSibling replaceChild()
90
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
innerHTML est
Propriétés reconnue comme
du code HTML
innerHTML
innerText
Permettent la
modification du
contenu de l’élément. innerText est
reconnue comme
du texte simple
91
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
92
Programmation Avancée (PRAVAN) HTML
4- Manipulation du DOM
Un élément HTML
Propriétés
attributs
Console
93
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
94
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
Propriétés
style
96
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
97
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
Méthodes
append()
98
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
99
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
Méthodes
remove()
removeChild()
replaceChild()
appendChild()
L’élément Titre 1
Permet de supprimer a été supprimé.
l’élément
100
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
Méthodes
remove()
removeChild()
replaceChild()
Au premier clic, Titre2
est supprimé.
appendChild()
Permet de supprimer
un élément enfant Au deuxième clic, Titre3
est supprimé.
Un élément HTML
Méthodes
remove()
removeChild()
replaceChild()
Permet de remplacer
un élément enfant Au deuxième clic, Titre 3 est remplacé
par Titre 1 encore
Un élément HTML
Méthodes
remove()
removeChild()
replaceChild()
Permet de rajouter un
élément enfant à la fin
103
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
Méthodes
Je peux créer un élément HTML à partir de 0, et l’insérer dans le DOM
remove()
removeChild()
replaceChild()
appendChild()
Permet de rajouter un
élément enfant
104
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
Méthodes
Je peux créer un élément HTML à partir de 0, et l’insérer dans le DOM
remove()
replaceChild()
appendChild()
Permet de rajouter un
élément enfant
105
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
106
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
Méthodes
hasAttribute()
getAttribute()
setAttribute()
Permettent de d’accéder
aux attributs de l’élément
Remarquez la différence
entre:
getAttribute("src")
et [Link]
getAttribute retourne la valeur exacte de l’attribut !
107
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Un élément HTML
Méthodes
[Link]()
[Link]()
[Link]()
108
Programmation Avancée (PRAVAN)
4- Manipulation du DOM
Le tout se fait généralement en 2 étapes :
Un élément HTML
1- Retrouver l’élément HTML
2- Faire une opération
Propriétés Méthodes
lastChild replaceChild()
nextSibling appendChild()
109
Programmation Avancée (PRAVAN)
DOM vs BOM
110
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
DOM
Rappelez-vous HTML
head body
…. p p
…. ….
111
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
Maintenant, il faut savoir
que l’objet document est
lui-même un enfant de
l’objet window window
DOM
document
HTML
head body
…. p p
…. ….
112
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
Maintenant, il faut savoir
que l’objet document est
lui-même un enfant de
l’objet window window
DOM
document
HTML
head body
…. p p
…. ….
113
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
DOM
HTML
head body
…. p p
…. ….
114
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
BOM: Browser Object
Model
window
DOM
HTML
head body
…. p p
…. ….
115
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
Quelques propriétés et méthodes intéressantes
Voir d’autres ici:
[Link] window
DOM
Méthodes
Pop-ups
document
alert() screen location history navigator
Affiche une boite d’alerte.
HTML
Prompt()
head body
Affiche une boite avec champs de saisie.
scrollTo()
…. p p une position précise
Scroll jusqu’à
scrollBy();
…. ….
Scroll par un pas spécifié
116
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
Quelques propriétés et méthodes intéressantes
Voir d’autres ici:
[Link] window
DOM
HTML
Propriétés
Height/width
head body
Orientation
…. p p
…. ….
117
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
Quelques propriétés et méthodes intéressantes
Voir d’autres ici:
[Link] window
DOM
head body
…. p p
…. ….
118
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
Quelques propriétés et méthodes intéressantes
Voir d’autres ici:
[Link] window
DOM
Méthodes
document screen location history navigator
back()
go()
HTML
forward()
head body
…. p p
…. ….
119
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
Quelques propriétés et méthodes intéressantes
Voir d’autres ici:
[Link] window
DOM
Propriétés
document screen location history navigator
platform
HTML
head body
…. p p
…. ….
120
Programmation Avancée (PRAVAN)
5- Le BOM (Browser Object Model)
Quelques propriétés et méthodes intéressantes BOM: Browser Object
Model
window
DOM
HTML
Voir d’autres ici:
[Link]
head body
…. p p
…. ….
121
Programmation Avancée (PRAVAN)
122
Programmation Avancée (PRAVAN)
6- Les APIs natives de Javascript
Géolocalisation
Storage
ML/IA
Web APIs
BOM
Réseau
DOM
Sécurité
Performance
Visuel
Evénement
HTML
Quelque chose se passe:
Plusieurs événements sont
possibles, par exemple:
onclick (au clic),
onmouseover (au survol),
onload (au chargement de
Changement visuel
Il est important de comprendre Nous allons
On sélectionne un élément HTML (presque
décortiquer
le DOM, pour savoir comment
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
sélectionner un élément HTML
Plusieurs types de traitements sont contenu de l’élément.
et comment le modifier. possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation.
affectations, comparaisons, tableaux, etc.
En langage JavaScript.
124
Programmation Avancée (PRAVAN)
Visuel
Evénement
HTML
Quelque chose se passe:
Plusieurs événements sont
possibles, par exemple:
onclick (au clic),
onmouseover (au survol),
onload (au chargement de
la page), etc.
Changement visuel
Nous allons
On sélectionne un élément HTML (presque
décortiquer
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
Plusieurs types de traitements sont contenu de l’élément.
possibles, comme ce qui peut se faire dans Ou, on modifie le style, pour, par exemple,
un langage de programmation: déclaration changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation.
affectations, comparaisons, tableaux, etc.
En langage JavaScript.
125
Programmation Avancée (PRAVAN)
Visuel
Evénement
HTML
Quelque chose se passe:
Plusieurs événements sont
possibles, par exemple:
onclick (au clic),
onmouseover (au survol),
onload (au chargement de
la page), etc.
Changement visuel
Nous allons
On sélectionne un élément HTML (presque
décortiquer
Traitement comme le fait le CSS), puis on modifie le
Script JS code HTML pour, par exemple, changer le
Les Evénements
Plusieurs types de traitements sont
possibles, comme ce qui peut se faire dans
un langage de programmation: déclaration
contenu de l’élément.
Ou, on modifie le style, pour, par exemple,
changer la couleur d’un élément.
de variables, opérations arithmétiques, Tout est modifiable par programmation.
Il est
important de connaitre
affectations, les événements
comparaisons, tableaux, etc.
En langage JavaScript.
possibles, pour maitriser l’interaction avec
l’utilisateur
126
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
Rappelez-vous
HTML
127
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
Rappelez-vous
HTML
C’est un Evénement
128
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
Rappelez-vous
HTML
C’est un Evénement
129
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
Rappelez-vous
HTML
Mais je le déclare où ??
C’est un Evénement
130
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
Rappelez-vous
HTML
C’est un Evénement
131
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
Rappelez-vous
HTML
132
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
Rappelez-vous
HTML
le "lorsque l’utilisateur clique" sur sur le bouton "Incrémenter" Je fait un traitement Une fonction qu’on appellera par
exemple "do Traitement", et
C’est un Evénement qu’on définira
En JavaScript, cet événement compteur s’incrémente
s’appel "onclick" de 1, et si on dépasse 5,
il devient rouge.
133
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
Rappelez-vous
HTML
Script JS
134
Programmation Avancée (PRAVAN) On voudrait prévoir le lorsque l’utilisateur clique sur le bouton
comportement suivant "Incrémenter", (un traitement)
6- Les Evénements (traitement) c’est : le compteur s’incrémente
de 1, et si on dépasse 5, il devient rouge.
HTML
Au clic
Script JS
Au clic
….
135
Programmation Avancée (PRAVAN)
6- Les Evénements
Autres notations
136
Programmation Avancée (PRAVAN)
6- Les Evénements
HTML
Au survol
Passage de la
souris, sans clique
Au survol
….
le "lorsque l’utilisateur clique"
clique
Evénement survol
onmouseover Mais il existe d’autres
événements possibles
137
Programmation Avancée (PRAVAN)
6- Les Evénements
HTML
Au survol
Passage de la
souris, sans clique
Au survol
….
le "lorsque l’utilisateur clique"
clique
Evénement survol
onmouseover
Liste des événements possibles
[Link]
[Link]
138
Programmation Avancée (PRAVAN)
6- Les Evénements
Event Description Exemple
[Link]("dblclick", ()=>
dbclick Double-clic sur un élément.
[Link]("Double clic"));
[Link]("keydown", e =>
keydown Une touche du clavier est enfoncée.
[Link]([Link]));
[Link]("keyup", ()=>
keyup Une touche du clavier est relâchée.
[Link]("Relâché"));
[Link]("focus", ()=>
focus Élément reçoit le focus (cliqué ou tabulé).
[Link]="yellow");
[Link]("blur", ()=>
blur Élément perd le focus.
[Link]="white");
[Link]("load", ()=>
load Page ou ressource terminée de charger.
[Link]("Page chargée"));
[Link]("contextmenu", e => {
contextmenu Clic droit (menu contextuel). [Link](); alert("Clic droit !");
});
[Link]("dragstart", ()=>
dragstart Début d’un glisser-déposer.
[Link]("Drag start"));
[Link]("drop", e =>
drop Élément déposé.
[Link]("Déposé !"));
139
Programmation Avancée (PRAVAN)
6- Les Evénements
HTML
Au survol de
Ici: j’ai mis mon traitement directement dans le HTML
Titre1
(juste montrer la possibilité).
J’ai aussi utilisé 2 événement:
• onmousover (au passage de la souris)
• onmousleave (quand l’élément n’est plus survolé)
140
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Bonnes pratiques
[Link] 141
Programmation Avancée (PRAVAN)
3- Les Bases du Langage JavaScript
Evolution du langage
Evolution
1995: Naissance.
1997-1999: ES1 à ES3: Première version stable
2009: ES5: Modernisation (strict mode, JSON, forEach, map, reduce) version supporté par tous les navigateurs
2015: ES6 Révolution (let, const, class, modules, fonctions fléchées, Promise,…)
2016-2025: ES7-ES15: Modernisation continue (async/await, rest/spread, flat, chaining…)
Où se dirige JS ?
Abandonce de Frameworks
Langage universel: côté client/serveur/mobile, IA, IOT
Interopérabilité • Front-end: React, Vue, Angular…
Performance/typage: apparition de TypeScript pour typer le • Back-end: NodeJS, Express, NestJS
code.
142
Programmation Avancée (PRAVAN)
Liens utiles
W3Schools
[Link]
[Link]
[Link]
143