Partie 3 : Manipuler les éléments d’une page avec DOM

Cette partie couvre les pages 123 à 173 du document.

1. Concepts & Définitions

2. Syntaxes & Codes

3. Attributs & Propriétés

Propriétés de l'objet document

Propriétés des Éléments DOM

Propriétés de Navigation dans l'Arbre DOM

Attributs de l'objet DOMMenu

4. Exemples Pratiques

Recherche d'éléments (p. 130)

<!DOCTYPE html>
<html>
<head></head>
<body>
  <h1 id="p1" class="c1">cours DOM JS</h1>
  <p class="c1">1er paragraphe</p>
  <p class="c2">2ème paragraphe</p>
</body>
</html>
let e1=document.getElementById("p1");
console.log(e1); // <h1 id="p1" class="c1">cours DOM JS</h1>

let e2=document.getElementsByTagName("p");
console.log(e2); // HTMLCollection(2) [p.c1, p]

let e3=document.getElementsByClassName("c1");
console.log(e3); // HTMLCollection(2) [h1#p1.c1, p.c1]

Navigation firstChild vs firstElementChild (p. 139-140)

<div id="parent">
  <h1>Un titre</h1>
  <p>Un paragraphe</p>
</div>
// Avec espace entre <div> et <h1>
let elt = document.getElementById("parent");
let premElt = elt.firstChild;
console.log(premElt); // text node
console.log(premElt.nodeName); // #text

// firstElementChild ignore le nœud texte
let premEltElement = elt.firstElementChild;
console.log(premEltElement.nodeName); // H1

Manipulation d'éléments (Création, Ajout, Suppression, Remplacement) (p. 163-165)

// Créer un élément
let element1 = document.createElement('p'); // Crée <p></p>

// Attacher un élément
let parent = document.getElementById("parent");
let enfant = document.createElement("p");
enfant.innerHTML = "C’est un nouveau élément";
parent.append(enfant);

// Supprimer un élément
let enfantASupprimer = document.getElementById("eltSupp");
parent.removeChild(enfantASupprimer);

// Remplacer un élément
let ancienElement = document.getElementById("id1");
let nouvElement = document.createElement("h2");
nouvElement.innerHTML = "C’est le nouveau élément.";
parent.replaceChild(nouvElement, ancienElement);

Mise à jour de style et d'attributs (p. 167-170)

// Modifier le style directement
document.getElementsByClassName("style1")[0].style.borderColor = "red";

// Modifier le style via className
document.getElementsByClassName("style1")[0].className = "styleErreur";

// Ajouter/Modifier un attribut
let btn = document.getElementById("Btn");
btn.setAttribute("class", "style1");
btn.setAttribute("disabled", "");

// Supprimer un attribut
let lien = document.getElementById("lien");
lien.removeAttribute("href");

Exemple complet de <menu> (p. 173)

<menu type="context" id="monMenu">
  <menuitem label="Actualiser" onclick="window.location.reload();" icon="ico_reload.png"></menuitem>
  <menu label="Partager sur...">
    <menuitem label="Twitter" icon="ico_twitter.png" onclick="window.open('//twitter.com/intent/tweet?text='+window.location.href);"></menuitem>
    <menuitem label="Facebook" icon="ico_facebook.png" onclick="window.open('//facebook.com/sharer/sharer.php?u='+window.location.href);"></menuitem>
  </menu>
  <menuitem label="Envoyer cette page" onclick="window.location='mailto:?body='+window.location.href;"></menuitem>
</menu>

5. Spécifications Techniques

6. Points Critiques