Manipulation du DOM en Javascript

Fonctions de manipulation du DOM

Pour manipuler le DOM, accéder à un élément, le supprimer, ajouter du contenu avant ou après, modifier le contenu de l’élément, modifier ses attributs ou ses classes CSS, etc., voici les fonctions utiles.

// Retourne un objet HTML correspondant à l'élément sélectionné
document.getElementById("my_div");
 
// Retourne un tableau de tous les éléments de la famille indiquée. Cette fonction peut être appelée sur un autre objet HTML
document.getElementsByTagName("table");
div.getElementsByTagName("ul");
 
// Retourne les éléments d'un formulaire dont l'attribut name a la valeur passée en paramètre
document.getElementByName("postal_code");
 
// Retourne le 1er élément trouvé dans le DOM correspondant au sélecteur CSS passé en paramètre
querySelector("#menu .item span");
 
// Retourne un tableau de tous les éléments trouvés dans le DOM correspondants au sélecteur CSS passé en paramètre
querySelectorAll("#menu li");
 
// Retourne la valeur de l'attribut en paramètre pour l'objet sur lequel on applique la fonction
getAttribute("href");
 
// Modifie la valeur de l'attribut en paramètre 1 avec la valeur du paramètre 2 sur l'objet
setAttribute("type","'hidden");
 
// Retourne les classes appliquées à l'objet source. Une chaine de caractères est retournée avec les classes séparées par des espaces
itemHTML.className;
 
// Modifier les classes CSS de l'objet source
itemHTML.className = 'low_padding";
 
// Retourne le contenu HTML de l'objet source
item.innerHTML
 
// Modifier le contenu HTML de l'objet source. On peut faire += pour ajouter du contenu
item.innerHTML = "<p>Nouveau contenu</p>";
 
// Accède / retourne l'élément parent de l'objet source
item.parentNode;
 
// Accède / retourne le 1er enfant / le dernier enfant de l'objet source
item.firstChild;
item.lastChild;
 
// Accède au prochain / précédent élément du DOM par rapport à l'élément source
item.nextSibling;
item.lastSiblgin;
 
// Créer un nouvel élément dans le DOM
document.createElement("a");
 
// Ajoute un élément enfant à l'objet source dans le DOM
document.getElementById("my_p").appendChild(newLink);
 
// Supprime un élément enfant de l'objet source dans le DOM
link.parentNode.removeChild("a");

Événements sur le DOM

Les événements permettent de déclencher une opération ou une suite d’opérations lorsqu’une action est réalisée sur un élément du DOM. Cela peut être au changement d’une valeur dans un formulaire, au clique sur un bouton, au survol d’un élément, etc.

Voici les principaux éléments :

ÉvénementDescription
clickCliquer sur un élément.
dbclickDouble-cliquer sur un élément.
mouseoverFaire entrer le curseur sur un élément.
mouseoutAire sortir le curseur sur un élément.
mousedownAppuyer sans relâcher le bouton gauche de la souris sur un élément.
mouseupRelâcher le bouton gauche de la souris sur un élément.
mousemoveFaire déplacer le curseur sur un élément.
keydownAppuyer sans relâcher une touche du clavier sur un élément.
keyupRelâcher une touche du clavier sur un élément.
keypressFrapper (appuyer puis relâcher) une touche du clavier sur un élément.
focusCibler l’élément.
blurAnnuler le ciblage de l’élément.
changeChanger la valeur de l’élément.
inputTaper un caractère dans un champ test.
selectSélectionner le contenu d’un champ.
submitEnvoyer le formulaire.
resetRéinitialiser le formulaire.

La mise en place d’évènements est grandement simplifiée avec des bibliothèques telles que jQuery. Ces dernières reposent toutefois sur des fonctions natives de Javascript. Pour l’ajout d’événement, on utilisera notamment la fonction addEventListener sur un élément du DOM en passant en paramètre l’événement souhaité et les opérations à effectuer. La suppression d’un événement est également possible.

// Mise en place d'un évènement
let element = document.getElementById("clickme");
element.addEventListener("click", function() {
    alert("Vous m'avez cliqué !");
});
 
// Suppression de l'évènement
element.removeEventListener("click", myFunction);

Lors du déclenchement de l“événement, on souhaite parfois neutraliser le comportement standard. Par exemple, lors de la validation d”un formulaire on pourrait vouloir bloquer temporairement la soumission de celui-ci pour faire un traitement et ensuite seulement le soumettre. Il est pour cela possible de capture un objet spécial : Event. L’élément du DOM est par ailleurs utilisable avec un autre spécial : this.

let form_login = document.getElementById("form_login");
form_login.addEventListener("submit", function(event) {
    event.preventDefault();
 
    // Traitement
 
    // On utilisera la variable << this >> pour manipuler le formulaire
 
});

Précisions sur l’objet Event

Un événement Javascript peut être câblé plusieurs fois sur un même élément du DOM. Par exemple, le clique sur un bouton peut avoir trois événements qui se déclencheront les uns à la suite des autres, dans l’ordre où ils sont définis dans le Javascript.

La fonction Event.preventDefault(); indique au navigateur de ne pas effectuer l’action par défaut prévue lorsque l’événement sur l’élément à lieu. Cela permet d’appliquer un traitement. Mais si l’élément a d’autres évènements dans le code, ceux-ci se déclencheront donc après ce premier traitement.

L’appel à la fonction Event.stopPropagation(); sur l’un des évènements évite cet événement ne se propage plus loin et les autres événements identiques sur l’élément ne seront alors pas déclenchés.

La fonction Event.stopImmediatePropagation(); permet qu’aucun événement, quel qu’il soit, ne soit appelé sur l’élément.