Modifier le document avec l'interface DOM
#1 Bilan des possibilités
Pour modifier le contenu de notre document, voilà l'ensemble de nos possibilités :
- Dans ce tuto, on va regarder comment modifier le contenu textuel avec la propriété
textContent
. Je vais expliquer le fonctionnement detextContent
. Un fonctionnement qui est peut-être un peu compliqué par rapport à la façon la plus courante de l'utiliser. - Ensuite, on va regarder comment modifier les attributs HTML. Là, on a deux possibilités. Soit passer par les propriétés des objets JavaScript en utilisant les noms des propriétés JavaScript. Soit passer par les méthodes de la famille
setAttribute()
en utilisant directement les noms des attributs HTML. - Dans le tuto suivant, on verra comment insérer du contenu dans le document avec les méthodes de l'objet
Node
. - Puis, on verra une dernière possibilité avec l'utilisation de
innerHTML
qui à la base est une propriété Microsoft. Cette propriété ne fait pas partie de la spec du W3C, mais elle est quand même bien pratique et bien couverte par l'ensemble des navigateurs (* consulter CanIuse).
#2
Modifier le contenu d'un élément avec la propriété textContent
Comment fonctionne textContent ?
textContent
vous renvoie le contenu textuel d'un élément et de ses descendants.
Dans l'exemple ci-dessous, on accède directement à l'adresse de l'instance de l'objet qui correspond à l'élément HTML en utilisant la méthode querySelector
. A partir de maintenant, on va dire qu'on accède à l'élément, et on ne va pas préciser à chaque fois qu'il s'agit de l'adresse, de l'instance, de l'objet du DOM, qui correspond à l'élément HTML.
Puis, on prend la propriété textContent
sur elt
. On récupère tout le contenu textuel de p
, y compris celui de strong
et de em
qui sont des enfants de p
. Vous voyez que les balises HTML n'ont pas été récupérées.
Remplacer le contenu existant
Vous pouvez remplacer le contenu existant en affectant directement la propriété textContent
avec une nouvelle chaîne de caractères. Ici, il faut avoir conscience que vous supprimez les nœuds enfants strong
et em
dans l'arbre.
Dans l'exemple ci-dessous, on accède directement à la propriété textContent
sans la stocker dans une variable.
Ajouter du contenu au contenu existant
Vous pouvez aussi ajouter du texte au contenu existant. Ci-dessous, vous faites en quelque sorte une opération de lecture / écriture.
#3 Modifier un attribut avec la propriété d'un objet
Ci-dessous, on va attribuer une classe au lien. On va se servir de la propriété JavaScript className
pour modifier l'attribut HTML class
. Il faut remarquer ici, que le nom de la propriété JavaScript n'est pas le même que le nom de l'attribut HTML. Ca ne veut pas dire que systématiquement propriété et attribut n'ont pas le même nom, mais ça arrive, et le cas de class
et de className
est probablement le plus connu.
#4
Modifier ou récupérer la valeur d'un attribut avec setAttribute()
et getAttribute()
Les méthodes setAttribute()
et getAttribute()
font partie d'une famille de fonctionnalités que l'on appelle des setter et des getter.
Ci-dessous elt
est une instance de l'objet HTMLAnchorElement
qui hérite de ses méthodes en tant qu'objet petit enfant de l'objet Element
. Vous pouvez consulter la spécification de l'objet Element
dans cette documentation de la partie noyau de la spec du W3C.
#5 Autres méthodes
Il existe d'autres méthodes de la famille de setAttribute()
et getAttribute()
, des méthodes appartenant aussi à l'objet Element
.
Je vous renvoie à la documentation MDN pour les méthodes :
hasAttribute()
qui permet de savoir si un élément possède un attribut donné.removeAttribute()
qui permet de supprimer un attribut donné.toggleAttribute()
qui permet de basculer d'un état à l'autre : je mets l'attribut puis j'enlève l'attribut. Cette méthode est utilisée pour les attributsdisabled
oureadonly
, attributs qui ont un fonctionnement binaire.