DOM (document object model)

Slides:



Advertisements
Présentations similaires
Introduction à DOM Maroua Bouzid
Advertisements

Les balises HTML et les objets JavaScript correspondants Objet document L'objet document est important dans la mesure ou il contient tous les objets du.
Commerce électronique Automne  Introduction  Création du panier d’achats  Migration du panier d’achats  Conclusion.
A la fin de ton année de 4 ème, tu dois être capable d’utiliser parfaitement un Mais d’abord qu’est-ce qu’un TABLEUR ? ???? TABLEUR- GRAPHEUR Page suivante.
Les systèmes d'information 1- Une pratique quotidienne 2- Les données 3- Approche conceptuelle 4- Notion de serveur 5- Conception d'un système d'information.
Gestion des PJ Service National d'Enregistrement Dossier Unique.
Créer un site Web avec Eva Spip Première approche B. Gugger – Mars 2006 – Département RTC.
Le DOM Le Document Object Model (DOM) est une interface de programmation pour les documents HTML et XML Il fournit une représentation structurée du document.
Toulibre : présentation de... xhtml + css par Rémy Sanchez.
Semaine 01 La programmation créative Introduction.
Master ESEEC Rédaction de documents (longs) structurés Patrice Séébold Bureau 109, Bât B.
1 Rapport PFE Gestion de Stock M LLE Nouhaila Touzani Ouazli.
SPIP.
Les titres dans le mémoire
Ajouter le code dans une page html
1.le DOM Introduction une page web est un document contenant du texte ainsi que des balises qui permettent de structurer ce document, en décrivant des.
Javascript et DOM Introduction Nicolas Chourot Informatique
Exploitation de logiciels :
Asynchronous Javascript And Xml
Les boites texte et dossier
Structure et Services « STS » Menu Structures : Divisions
L’accès au portail en deux étapes Que contient cette fiche?
Environnement du développement de BD ORACLE REPORTS 10g
10 - CREATION D’UNE ACTION
Tiré de: J.-M. Muller, Arithmétique des ordinateurs, Masson, 1989.
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Pointeurs et langage C.
JQuery.
5ème Livre 1.
JavaScript.
Spip / Joomla...en 1h ! Mercredi 30 Avril 2008.
Javadoc et débogueur Semaine 03 Version A17.
Les instructions PHP pour l'accès à une base de données (Partie 4)
3ème Livre 1 Rappel.
Présentation de JQUERY
Astuces jquery.
Création d’une sous rubrique
Asynchronous Javascript And Xml
Nouvelles balises de structure
Module 1 : Réaliser un site internet
HTML/CSS/JS en deux idées simples.
Gestion du cours Aissa Boulmerka.
Feuilles de style Cascading Style Sheets
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Direction du système d’information et de la stratégie numérique
AJAX et JQuery
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Type Concret – Type Abstrait
CSS et DREAMWEAVER (Suite et fin)  Les liens
Introduction à Internet
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Feuille de route Espace de travail Création de diapositives
Présentation de la base Frantext
La gestion des habilitations par le partenaire
Les classes et les objets
Programmation Android Les listes
Atelier de formation à l’élaboration de CD-ROM (Ouagadougou, 19 et 20 août 2015) Par-Gs 1.
STS Web Services libres Gérer les services libres
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Programmation Web : DOM en PHP
2/24/2019 Outils informatiques Séance 2 : les styles 1 1.
Structure de données utiles
LISTES.
Présentation Chaînage dynamique Retour sur les tableaux
Tableau de bord d’un système de recommandation
Cours jQuery. Plan du cours I. Introduction II. Les sélecteurs III. Les évènements IV. Quelques effets V. Manipulation du DOM 2.
Definition de html sommaire. Présentation de html, css et javascript Module 1.
Boulain Joris, Handouz Yassine, Regnier Fabien, Giraud Antoine
ScienceDirect Guide d’utilisation de la base de données : ScienceDirect Pr R. EL OUAHBI.
Site web, Ce qu’il faut savoir ?
Transcription de la présentation:

DOM (document object model) Introduction au DOM (document object model) Département d’informatique Collège Lionel-Groulx

DOM Qu’est-ce que le DOM? Document Object Model (modèle des objets du document). La page Web, chargée en mémoire, est représentée en une arborescence d'objets (racine, nœuds et feuilles). On peut accéder à ces objets ou parcourir l'arborescence en JavaScript.

Pourquoi se servir du DOM Avec une interface de programmation nous permettant de parcourir le DOM, nous allons pouvoir interagir avec lui. Ces interactions comprennent : La modification du contenu d'un élément précis ; La modification du style d'un élément ; La création ou la suppression d'éléments ; L'interaction avec les utilisateurs, afin de repérer des clics sur un élément ou encore de récupérer leur nom dans un formulaire.

Hiérarchie d’une page HTML Soit la page html suivante: <html> <head> <title>Hiérarchie DOM</title> </head> <body> <h1>Hiérarchie DOM</h1> <p>La hiérarchie d'une page HTML</p> </body> </html>

Représentation hiérarchique Soit la page html suivante: Sa représentation hiérarchique: <html> <head> <title>Hiérarchie DOM</title> </head> <body> <h1>Hiérarchie DOM</h1> <p>La hiérarchie d'une page HTML</p> </body> </html>

Représentation hiérarchique Exercice Soit la page HTML suivante Représentez le DOM associé à cette page: <html> <head> <meta charset="utf-8" /> <title>Le titre de la page</title> </head> <body> <div> <p>Un peu de texte <a>et un lien</a></p> </div> </body> </html>

Représentation hiérarchique Exercice - Solution Soit la page HTML suivante Représentez le DOM associé à cette page: <html> <head> <meta charset="utf-8" /> <title>Le titre de la page</title> </head> <body> <div> <p>Un peu de texte <a>et un lien</a></p> </div> </body> </html>

Fonctions de recherche d'éléments du DOM Accéder aux éléments Il existe plusieurs façons d’accéder aux éléments du DOM mais disons que les 4 fonctions ci-dessous sont les plus utilisées: getElementById() getElementsByTagName() querySelector() querySelectorAll()

Fonctions de recherche d'éléments du DOM - getElementById Permet de retrouver facilement un élément précis. Comme son nom l'indique, elle va rechercher un élément grâce à son id . Rappelez-vous qu'il ne doit y avoir qu'un seul élément avec un id donné, cette méthode est donc une candidate parfaite pour retrouver un élément particulier. getElementById(<id>) prend en paramètre l' id de l'élément que vous recherchez et vous retournera cet élément s'il a été trouvé. Par exemple, si l'on part du code HTML suivant : <p id="monparagraphe">My content</p> , on pourra trouver cet élément avec le code JavaScript suivant : const myAnchor = document.getElementById(‘monparagraphe');

Fonctions de recherche d'éléments du DOM - getElementById Changer le texte du paragraphe avec innerHTML: Par exemple, si l'on part du code HTML suivant : <p id="monparagraphe">Le contenu du paragraphe</p> , on pourra trouver cet élément avec le code JavaScript suivant et changer son texte : const monPara = document.getElementById(‘monparagraphe'); monPara.innerHTML = “Un autre contenu de paragraphe"

Fonctions de recherche d'éléments du DOM - getElementsByTagName getElementByTagName Avec cette méthode, vous rechercherez tous les éléments avec un nom de balise bien précis (par exemple tous les liens ( <a> ), tous les boutons ( <button> ), tous les paragraphes (<p>), etc...). De la même manière que la méthode précédente, vous récupérerez la liste des éléments correspondants. Cependant, ce vous allez récupérer est bien différent. Dans le cas de getElementById, on récupére un nœud unique qui correspond à l’id de l’élément. Dans le cas de getElementByTagName, vous récupérez un tableau de nœud qui correspondent à la balise recherchée.

Fonctions de recherche d'éléments du DOM - getElementsByTagName getElementByTagName - Exemple Soit la page Web suivante: <div> <p>Contenu 1</p> <p>Contenu 2</p> <p>Contenu 3</p> </div> On récupère tous les éléments <p> const lesParagraphes = document.getElementsByTagName('p'); const troisiemeParagraphe = lesParagraphes[2]; On change le texte: troisiemeParagraphe.innerHTML = "Le troisième paragraphe“; troisiemeParagraphe.style.color = "green“; //Il y a mieux pour cela

Fonctions de recherche d'éléments du DOM - querySelector() Cette méthode est relativement récente en JavaScript (2013) et permet de cibler que le premier élément trouvé et ne renvoie donc qu’un seul objet. Quelle est donc la différence avec getElementById ? querySelector est plus flexible car la recherche peut se faire avec un id, un nom de balise, un nom de classe ou des sélecteurs plus complexes.

Fonctions de recherche d'éléments du DOM - querySelector() querySelector – Exemple 1 Récupérer selon la balise Soit la page Web suivante: <body> <div> <p>Premier paragraphe</p> <p>Deuxième paragraphe</p> <p>Troisième paragraphe</p> </div> </body> Accédons au premier paragraphe : let para1 = document.querySelector("p"); para1.innerHTML = "Je change le texte"; Remarquez qu’il aurait fallu associer un id au premier <p> pour que getElementById fasse la même chose

Fonctions de recherche d'éléments du DOM - querySelector() querySelector – Exemple 2 Récupérer selon l’id Soit la page Web suivante: <body> <div> <p>Premier paragraphe</p> <p id="p2" >Deuxième paragraphe</p> <p>Troisième paragraphe</p> </div> </body> Accédons au 2e paragraphe : let para2 = document.querySelector("#p2"); para2.innerHTML = "Je change le texte";

Fonctions de recherche d'éléments du DOM - querySelector() querySelector – Exemple 3 Récupérer selon la classe Soit la page Web suivante: <body> <div> <p class="red" >Premier paragraphe</p> <p >Deuxième paragraphe</p> <p>Troisième paragraphe</p> </div> </body> Accédons au paragraphe de classe "red" : let para = document.querySelector(".red"); para.innerHTML = "Je change le texte";

Fonctions de recherche d'éléments du DOM - querySelector() querySelector – Exemple 4 Récupérer plus en détail Soit la page Web suivante: <body> <div> <p class="red" >Premier paragraphe</p> <h3><p class="green" >Deuxième paragraphe</p></h3> <p>Troisième paragraphe</p> </div> </body> Accédons au paragraphe de la balise h3: let para = document.querySelector("h3 > p"); para.innerHTML = "Je change le texte";

Fonctions de recherche d'éléments du DOM - querySelectorAll() La méthode querySelectorAll () renvoie tous les éléments du document correspondant à un ou plusieurs sélecteurs CSS spécifiés, en tant qu'objet NodeList statique. L'objet NodeList représente une collection de nœuds.

Fonctions de recherche d'éléments du DOM - querySelector() querySelectorAll – Exemple 1 Que fait-on si on veut récupérer tous les paragraphes et changer le texte ? Ajouter un id à chacun ? En utilisant plutôt querySelectorAll()

Fonctions de recherche d'éléments du DOM - querySelector() querySelectorAll – Exemple 1 Changer le texte des <li> Soit la page Web suivante: <div> <ul> <li>Orange <li>Pomme <li>Banane </ul> </div> let liste = document.querySelectorAll("li"); let tabLegumes = ['Brocolli', 'Carotte', 'Patate']; for(let i = 0; i < liste.length; i++) { liste[i].innerHTML = tagLegumes[i]; }

Sélecteur CSS avec querySelector et querySelectorAll Exemple Signification element p Sélectionne tout les éléments <p> element,element div, p Sélectionne tout les éléments <div> ainsi que tous les éléments <p> element>element div > p Sélectionne tout les éléments <p> dont le parent est un élément <div> element+element div + p Sélectionne tout les <p> qui sont placés immédiatement après un élément <div> :nth-child(n) p:nth-child(2) Sélectionne tout les éléments <p> qui sont les 2e enfants de leur parent. :nth-of-type(n) p:nth-of-type(2) Sélectionne tout les <p> qui sont les 2e enfants de leurs parents. Source: https://www.w3schools.com/cssref/css_selectors.asp

Sélecteur CSS avec querySelector et querySelectorAll Si on veut le 2e “ul" : Avec nth-child(2) : el = document.querySelector('ul:nth-child(2)'); console.log(el); //Retourne <ul id="animaux"> Avec nth-of-type(2) : el = document.querySelector('ul:nth-of-type(2)'); console.log(el); // Retourne le 2e <ul> On peut donc accéder aux éléments de la façon suivante: let el = document.querySelector('ul:nth-of-type(2)'); let elNatation = el.querySelector('li:nth-child(2)'); Ou encore comme ceci: let elNatation = el.querySelector('ul:nth-of-type(2) > li:nth-child(2)'); Différence entre nth-child(n) et nth-of-type(n) Prenons le bout de code HTML suivant: <div>Animaux préférés:</div> <ul id="animaux"> <li>Chien</li> <li>Tigre blanc</li> <li>Pingouin</li> <li>Chat</li> </ul> <br><br> <div>Sports préférés:</div> <ul> <li>Hockey</li> <li>Natation</li> <li>Soccer</li>

Programmation dynamique dans le DOM On peut dynamiquement ajouter des éléments au DOM à l’aide de JavaScript. En fait n’importe quelle balise HTML peut être ajoutée à une page HTML de façon dynamique. Pour ce faire, on suit habituellement toujours les même étapes pour créer un élément et l’ajouter dans le DOM. Ces étapes sont habituellement les suivantes: Création de l’élément (la balise p, a, span, ul, select, button, etc) Modification des attributs de l’élément nouvellement créé (classe, texte…) Ajout de l’élément créé dans le DOM.

Programmation dynamique dans le DOM Étape 1 - Création de l’élément (la balise p, a, span, ul, select, button, etc) Méthode createElement Par exemple, pour créer un élément <p>, nous ferons: let para = document.createElement("p");  <p></p> Pour créer un bouton: let para = document.createElement("button");  <button></button>

Programmation dynamique dans le DOM Étape 2 - Modification des attributs de l’élément nouvellement créé (classe, texte…) Reprenons l’élément <p> que nous avons créé et ajoutons le texte "Bonjour tout le monde" . let para = document.createElement("p"); //Étape 1 d’avant para.textContent = "Bonjour tout le monde" para.classList.add(".maclasse"); //On pourrait aussi ajouter un style css en passant Nous avons maintenant ceci: <p class="maclasse">Bonjour tout le monde</p>

Programmation dynamique dans le DOM Étape 3 - Ajout de l’élément créé dans le DOM. Il s’agit maintenant d’ajouter l’élément nouvellement créé dans le DOM comme enfant de l’élément voulu.. Si on veut ajouter dans le body: document.body.appendChild(para); Si on veut l’ajouter dans un <div> déjà existant ou tout autre élément, on fera: document.querySelector('div').appendChild(para);

Attendre la fin du chargement L'événement load est très important. Si on essaie d'accéder aux éléments avant le chargement, ceux-ci seront indéfinis (undefined). On ne peut pas déclarer d'autres événements avant que le document ne soit chargé. On peut déclarer nos scripts à la fin, pour être certains que tout le document est chargé. Ou encore, le placer au début, mais s'assurer que tous les accès aux éléments sont fait après le chargement (window.onload). <body onload="surChargementPage()"> <h1>Title</h1> window.onload = function() { // Ce qu'on fait au chargement de la page } document.onload = function() { // Ce qu'on fait au chargement de la page } window.addEventListener('load', function() { // Ce qu'on fait au chargement de la page }); document.addEventListener('load', function() { // Ce qu'on fait au chargement de la page });