Une liste d'éléments html
On a vu (relire la page de cours et
celle d'exercices au besoin)
comment agir dans la page (changement de couleur,
apparition d'un élément html...) en réaction à un événement click.
Un inconvénient dans la technique présentée dans ces pages était de n'agir que sur un seul élément html.
On aimerait maintenant agir sur une série d'éléments de même nature sans avoir à écrire un script
pour chaque élément. Pour cela, il nous
faudra disposer :
- D'une "liste"
("NodeList")
de ces éléments. Nous voyons ci-dessous comment obtenir une telle liste.
- De la possibilité d'agir de façon analogue sur tous les éléments de la liste sans
réécrire le code: on utilisera pour cela une boucle
for.
La syntaxe de for
La syntaxe est la suivante: for(let i=valeurdepart; i<= valeurfin; i += pas).
- A l'intérieur des parenthèses, on commence par déclarer la variable indice (nommée i ci-dessus,
mais le choix de ce nom est bien sûr libre) et la première valeur prise
let i=valeurdepart.
- On donne ensuite une condition d'arrêt. Ici
i<= valeurfin. On aurait
pu utiliser < ou encore d'autres façons d'exprimer la condition d'arrêt.
- Le code
i += pas signifie que i avancera de la valeur pas. Il est équivalent au code
i = i+pas. Ici i prendra les valeurs
valeurdepart, valeurdepart+pas, valeurdepart+2*pas, valeurdepart+3*pas... tant que ces valeurs restent inférieures
ou égales à valeurfin. On utilisera souvent i++ qui est équivalent à i = i+1 (c'est à dire
encore à i += 1).
Un exemple
On utilise document.write() qui permet d'écrire directement du code html dans la page html.
querySelectorAll
Vous compléterez la lecture des exemples ci-dessous par la lecture de la page w3schools
querySelectorAll
et de la page w3schools
NodeList.
Premier exemple
Dans l'exemple ci-dessous, on agit sur les éléments de classe A un par un et on agit
d'un coup sur tous les éléments de classe B en utilisant une boucle for.
On notera que lorsqu'on a récupéré tous les éléments de classe B avec le code
let paragraphesB = document.querySelectorAll(".B");, on dispose facilement
du nombre d'éléments de classe B dans la page: c'est la longueur de la liste donnée par
paragraphesB.length. Les éléments de la liste paragraphesB
sont numérotés de 0 à paragraphesB.length-1: paragraphesB[0],
paragraphesB[1], paragraphesB[2], ..., paragraphesB[paragraphesB.length-1].
Second exemple
Dans cet exemple, on agit sur tous les paragraphes.
Autres instructions js pour une liste d'éléments html
querySelectorAll permet de sélectionner la liste des éléments correspondant à un sélecteur
css particulier.
Il existe également deux autres méthodes javascript plus spécifiques (dont vous n'aurez pas besoin,
puisque querySelectorAll peut les remplacer):
querySelector
querySelector permet de sélectionner uniquement le premier
élément d'une liste d'éléments correspondant à un sélecteur
css particulier.
Vous pouvez lire la page w3schools
querySelector().
Il est parfois utilisé en remplacement de
getElementById().