JavaScript et le D.O.M
Définition
Le DOM signifie Document Object Model. Il s'agit d'une cartographie de la page HTML (I.E l'ensemble des balises, leur propriétés leur contenu)
Ce qui signifie que si je créé une liste <ul> le DOM me donnera accès à un objet ul pour le manipuler
Si j'ajoute un list item à cette liste j'aurais ce model
- ul
- li
Si j'ajoute un lien à ce list item j'aurais ce model
- ul
- li
- a
- li
Pour être plus précis ce sera ce model
- document
- body
- ul
- li
- ul
- body
Réupérer les éléments du D.O.M
Pour récupérer un composant de votre page, il faut utiliser la classe document. Il s'agit de l'interface qui represente la page web une fois chargée sur la navigateur et sert de point d'accès pour tout les composants de la page.
Dans cet exemple nous avons récupérer un élément dont l'attribut ID corespond à "ma
il existe un certain nombre de méthodes permetant de récupérer les composants de différentes manières
méthode | défintion |
---|---|
getElementById | récupére un élément via son ID <div ID="madiv"> |
getElementsByTagName | récupére les éléments via le nom de leur balise
document.getElementByTagName("a"); // récupère toutes les balises </a>
|
getElementsByclassName | récupére les éléments appartenant à la même classe
document.getElementByClassName("menu"); // récupére les élément ayant une classe ".menu"
|
getElementsName | récupére les éléments ayant le même attribut name
document.getElementsName("test");
|
querySelector | récupére un élément gràce à son selecteur CSS
document.querySelector("#madiv"); // equivaut à document.getElementById("madiv");
|
querySelectorAll | récupére l'ensemeble élément gràce à au selecteur CSS
document.querySelectorAll(".menu"); // equivaut à document.getElementByClassName("menu");
|
Manipuler les éléments du D.O.M
Pour manipuler les composant du D.O.M, il suffit de modifier certaine de leur propriété
Par exemple afficher le nom saisi dans une balise <div/>
- var _nom=prompt("quel est votre nom");
- document.querySelector("#madiv").innerHTML="Bienvenue "+_nom;
Par exemple afficher l'ensemble des éléments issus de la même classe en gras
- var _myclass=ocument.querySelectorAll(".maClasse");
- for(var i = 0; i < _myclass.length; i++){
- _myclass[i].style.fontWieght="bold";
- }
créer un élément via D.O.M
Il est possible de créer des composant dynamiquement sur la page. Pour ce faire, on utilise la méthode createElement appendChild pour les associer les uns aux autres
Par exemple créer une boîte de dialogue
- //créer les éléments nécessaires
- var _div=document.createElement("div");//contient la boîte de dialogue
- var _close=document.createElement("button");//bouton qui fermera la boîte de dialogue
- var _message=document.createElement("p");//message de la boîte de dialogue
- //paramétrer les éléments de texte
- _message.innerHTML="Bienvenue";
- _close.innerHTML="OK";
- //gérer l'événement
- _close.onclick=function() {
- document.removeChild(_div); //retire la div dès que l'utilisateur clique sur "OK"
- }
- //Le style du bloc
- _div.style["position"]="absolute";
- _div.style["padding"]="12px";
- _div.style["background"]="#FAE7B0";
- //associer les éléments entre eux
- _div.appendChil(_message);
- _div.appendChild(_close);
- afficher la boîte de dialogue
- document.body.appendChild(_div);