Apprendre Javascript pour rendre vos pages Web interactives

Auteur: Mohamed CHINY Durée necessaire pour le cours de Apprendre Javascript pour rendre vos pages Web interactives Niveau recommandé pour le cours de Apprendre Javascript pour rendre vos pages Web interactives Supports vidéo disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz disponible pour ce cours

Leçon 21: Objet Document et DOM en Javascript (Partie 3)

Toutes les leçons

Apprendre Javascript pour rendre vos pages Web interactives

Leçon 1
Javascript c'est quoi?
Leçon 2
Comment intégrer du code Javascript?
Leçon 3
Pour commencer: les bases du Javascript
Leçon 4
Les bases du Javascript (La suite)
Leçon 5
Structures de contrôle (conditions et boucles)
Leçon 6
Les fonctions
Leçon 7
Les événements en Javascript
Leçon 8
Objets, méthodes et attributs
Leçon 9
Exercices - Permutation et calculatrice
Leçon 10
Objet Array: les tableaux
Leçon 11
Objet String: chaînes de caractères
Leçon 12
Exercice - Contrôle de saisie en Javascript
Leçon 13
Objet Math
Leçon 14
Objet Date
Leçon 15
Objet RegExp: Les expressions régulières
Leçon 16
Objet window
Leçon 17
Exercice - Afficher un message lettre par lettre
Leçon 18
Objet screen
Leçon 19
Objet Document et DOM en Javascript (Partie 1)
Leçon 20
Objet Document et DOM en Javascript (Partie 2)
Leçon 21
Objet Document et DOM en Javascript (Partie 3)
Leçon 22
Objet event
Leçon 23
Gestion des exceptions
Leçon 24
Exercice - Album photo
Leçon 25
API Selectors
Leçon 26
Exercice - Réaliser un jeu de loterie avec Javascript
Leçon 27
Exercice - Réaliser un album photo à effet de vagues (ou domino)
Leçon 28
Fonctions fléchées (Arrow function)
Leçon 29
Fonctions de rappel (Callback function)
Leçon 30
Types primitifs, non primitifs et notion du prototype
Leçon 31
Objets personnalisés en Javascript
Leçon 32
Classes et héritage
Leçon 33
Les promesses - Objet Promise
Leçon 34
Gérer les promesses avec une fonction asynchrone - async et await

Fonctions anonymes

Dans cette partie on va voir une autre manière de déclarer ses fonctions en Javascript qui consiste à créer celles-ci à la volée.
Même si j'ai préféré traiter ce sujet dans la partie DOM, sachez qu'on peut utiliser les fonctions anonymes partout en Javascript, même sans utiliser l'interface DOM.
Dans la plupart des cas, on a besoin de déclarer des fonctions anonymes sur des objets (nœuds) nouvellement intégrés au DOM.

D'une manière générale une fonction anonyme est déclarée comme ceci:

objet.onévénement = function() { corps de la fonction }

Dans ce cas, si l'événement déclaré comme attribut sur l'objet est détecté sur celui-ci, le code (corps de la fonction) sera exécuté.

Essayons d'améliorer le premier exemple de la page précédente où on crée des DIV dynamiquement. L'objectif est d'afficher un message dans la boite alert() une fois une des DIVs créées est survolée.

Voici le code:
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8" />
      <style>   
         .maclasse{
            width:200px;
            height:60px;
            background-color:#EE6600;
            margin:10px;
            font:14pt verdana;
            padding:10px;
            color:#FFFFFF;
         }
      </style>
      <script language="javascript">
         function ajouter(){
            baliseDIV=document.createElement("div");
            baliseDIV.className="maclasse";
            message=document.createTextNode("Bonjour à tous.");
            baliseDIV.appendChild(message);
            document.getElementById("madiv").appendChild(baliseDIV);   
            baliseDIV.onmouseover=function(){
               alert("Bonjour");
            }
         }
      </script>
   </head>
   <body onLoad="decoup()">   
      <input type="button" value="Ajouter une DIV" onClick="ajouter()" />
      <div id="madiv"></div>
   </body>
</html>
Ce qui donne:
L'attribut qui représente l'événement (onmouseover par exemple) doit être en minuscule.

Gestionnaire d'événements dynamique

Méthode addEventListener()

Si les fonctions anonymes permettent de créer des fonction à la volée sur n’importe quel objet Javascript, la méthode addEventListener() quant à elle, permet de d'ajouter dynamiquement un gestionnaire d'événement en s'appuyant sur les spécifications du DOM.

La syntaxe du gestionnaire d'événements dynamique est:

objet.addEventListener( Nom_de_l'événement , fonction_à_executer , booléen )
  • Le nom de l'événement définit l'événement à prendre en compte par le gestionnaire. Par exemple: click, mouseover, mousemove... (Pas de préfixe on).
  • Fonction à exécuter représente le nom de la fonction à appeler (sans parenthèses) ou une fonction anonyme à travers laquelle on exécute le code directement sans définir une fonction au préalable .
  • La valeur booléenne peut être true ou false. Chacune des deux valeurs représente un mode de propagation des événements en Javascript. En effet, il existe deux modes: Capture représenté par true et bouillonnement représenté par false. Nous aurons l'occasion de voir la propagation des événements dans la partie suivante.

Avec le gestionnaire d'événements dynamique, l'exemple précédent devient:
<html>
   <head>
      <meta charset="UTF-8" />
      <style>   
         .maclasse{
            width:200px;
            height:60px;
            background-color:#EE6600;
            margin:10px;
            font:14pt verdana;
            padding:10px;
            color:#FFFFFF;
         }
      </style>
      <script language="javascript">
         function afficherMessage(){
            alert("Bonjour");
         }
         function ajouter(){
            baliseDIV=document.createElement("div");
            baliseDIV.className="maclasse";
            message=document.createTextNode("Bonjour à tous.");
            baliseDIV.appendChild(message);
            document.getElementById("madiv").appendChild(baliseDIV);   
            baliseDIV.addEventListener("mouseover",afficherMessage,false);
         }
      </script>
   </head>
   <body onLoad="decoup()">   
      <input type="button" value="Ajouter une DIV" onClick="ajouter()" />
      <div id="madiv"></div>
   </body>
</html>
Ce qui donne:
On aurait pu remplacer la ligne:
baliseDIV.addEventListener("mouseover",afficherMessage,false);
par
baliseDIV.addEventListener("mouseover",function(){alert("Bonjour");},false);
Au lieux d'appeler la fonction afficherMessage qui est censée afficher le message. On aurait pu déclarer le code à exécuter directement à travers une fonction anonyme.

Méthode removeEventListener()

La méthode removeEventListener() permet de retirer un gestionnaire d’événement dynamique créé par la méthode addEventListener().

La syntaxe de la suppression d'un gestionnaire d'événements dynamique est:

objet.removeEventListener( Nom_de_l'événement , fonction_à_executer , booléen )

Les paramètres sont les mêmes que addEventListener().

Gestion avancée des événements en vidéo



Leçon 6
Les fonctions
Leçon 13
Objet Math
Leçon 14
Objet Date
Leçon 16
Objet window
Leçon 18
Objet screen
Leçon 21
Objet Document et DOM en Javascript (Partie 3)
Leçon 22
Objet event
Leçon 25
API Selectors