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 25: API Selectors

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

Accès au DOM via l'API Selectors

Définition

L'API Selecrotrs est une Interface de Programmation destinée à la manipulation des objets du DOM inclus dans les documents balisés comme HTML ou XML.

L'API Selectors est une spécification W3C (Voir le lien: https://www.w3.org/TR/selectors-api/).

Cette API est principalement intégrée au Javascript (ainsi qu'à ses frameworks comme le célèbre jQuery) et il permet d'accéder aux objets du DOM d'une manière simple à la manière des sélecteurs CSS.

Quelle est l'utilité de l'API Selectors?

Nous avons vu dans des chapitres précédents que pour accéder aux éléments du DOM on peut procéder de plusieurs manières:
  • Accès hiérarchique: Il s'agit d'une technique utilisée principalement quand on veut accéder à des éléments d'un formulaire comme une zone de texte ou une liste de sélection. Il consiste tout simplement à parcourir tous les noeuds parent avant d'atteindre la cible.
  • Accès aux images: Dans ce cas seules les images d'un document sont concernés par cette méthode. Il s'agit de retourner un tableau qui contient toutes les images du document courant et accéder ainsi à l'une d'entre elle via son indexe ou son nom.
  • Accès via l'attribut ID: C'est l'une des méthodes les plus populaires, elle consiste à accéder à un élément HTML (de n'importe quel type) via son ID (qui est toujours unique).
  • Accès via le nom de balise: Il s'agit d'une méthode largement utilisée aussi et qui consiste à retourner tous les objets de même type (même balise) en tant que tableau et en sélectionner un via son indexe (l'indexe 0 pour le premier élément, 1 pour le deuxième...).
  • Accès via le nom de la classe: Là encore on peut accéder à tous les objets HTML qui ont un nom de classe commun et accéder à l'un d'entre eux via son indexe.
  • Accès direct via l'objet THIS: C'est une méthode simple qui consiste à récupérer l'objet THIS (qui renvoie vers l'objet courant).
  • Accès via l'objet EVENT: Dans ce cas on peut accéder un objet (voir son enfant le plus profond) en exploitant le principe de propagation des événements vu précédemment.

Exemples:
<form name="fo">
   <input type="text" name="prenom" />
</form>
<img src="monimage.png" id="monimage" />

<script>
   // Accès à la zone de texte d'une manière hiérarchique
   alert(documen.fo.prenom.value);

   // Accès à l'image
   alert(document.images[0].getAttribute("src"));
   document.getElementById("monimage").src="images/monautreimage.png";
   document.getElementsByTagName("img").item(0).style.width="400px";
</script>
Bien que ces méthodes ne sont pas trop compliquées à mettre en oeuvre mais il est parfois difficile de spécifier un élément particulier dans l'arbre du DOM, d'autant plus si l'élément est doté d'une pseudo-classe ou pseudo-élément. Mais l'intégration de l'API Selectors dans Javascript a changé les choses. En effet, il est désormais possible d'accéder à un objet quelconque de la même façon qu'on le fait en CSS, c'est à dire en utilisant des sélecteurs. D'ailleurs les personnes qui utilisent la bibliothèque jQuery savant de quoi ça s'agit ;)

Mettre en oeuvre l'API Selectors

En Javascript, Il existe deux méthodes qui permettent de mettre en oeuvre l'API Selectors, il s'agit de querySelector() et querySelectorAll().

La méthode querySelector()

La méthode querySelector() accepte comme argument le sélecteur de l'objet (comme en CSS) et permet d'accéder au premier objet du document qui répond au sélecteur.

Exemple:
<header>
   <div id="id1">1</div>
   <div id="id2">2</div>
   <div id="id3">3</div>
</header>

<script>
   alert(document.querySelector("div").getAttribute("id"));
</script>
Après l'exécution du code on verra s'afficher le message "id1" qui correspond à la valeur de l'attribut id de la première balise <div> du document.

Comme c'est le cas en CSS on peut remplacer le code Javascript précédent par l'une des lignes suivantes:
<script>
   alert(document.querySelector("#id1").getAttribute("id"));
   alert(document.querySelector("header>div").getAttribute("id"));
</script>

La méthode querySelectorAll()

Si la méthode querySelector() renvoie le premier élément qui répond au sélecteur passé en argument, la méthode querySelectorAll() quant à elle, renvoie tous les éléments qui satisfont le sélecteur spécifié. Cette méthode génère alors un tableau de la même manière que la méthode getElementsByTagName().

Exemple:
<header>
   <div id="id1">1</div>
   <div id="id2">2</div>
   <div id="id3">3</div>
</header>

<script>
   alert(document.querySelectorAll("div").length);
</script>
Le code précédent affiche 3, ce qui correspond au nombre de DIV qui se trouvent dans le document.

La méthode querySelectorAll() accepte aussi, comme paramètre, le sélecteur spécifié à la manière du CSS.

Exemple:
<header>
   <div id="id1">1</div>
   <div id="id2">2</div>
   <div id="id3">3</div>
</header>

<script>
   for(i=0; i<document.querySelectorAll("header>div").length;i++)
      document.querySelectorAll("header>div").item(i).style.color="orange";
</script>
Le code précédent colore en orange tous les textes inclus dans les balises <div> qui sont des enfants directs de la balise <header>.

Autre exemple:
<header>
   <div id="id1">1</div>
   <div id="id2">2</div>
   <div id="id3">3</div>
</header>

<script>
   document.querySelectorAll("header>div:nth-child(2)").item(0).style.color="orange";
</script>
Le code précédent colore en orange seulement la deuxième balise <div> qui est enfant direct de la balise <header>.

Conclusion

Les méthodes querySelector() et querySelectorAll() n'amoindrissent en aucun cas le rôle des autres méthodes qui permettent d'accéder aux éléments du DOM, mais il représentent une technique de plus pour parcourir un document balisé et offrent une plus grande flexibilité, surtout aux développeurs qui sont habitués à l'utilisation des sélecteurs CSS.

API Selectors 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 22
Objet event
Leçon 25
API Selectors