Ver código fonte

Màj et reorganisation part 2

Benoît Hubert 7 anos atrás
pai
commit
f3779ff12e

+ 10 - 16
react-tuto/src/markdown/2. Manipuler le HTML/01. L'API DOM.md

@@ -1,23 +1,17 @@
 <blockquote>
-Dans le navigateur, JS dispose de l'<em>API DOM</em>. Le DOM ou <em>Document
-Object Model</em> est la représentation, sous forme d'un "arbre", du document HTML.
+Dans le navigateur, JS dispose de l'<em>API DOM</em>, qui permet de manipuler le document HTML.
+Le DOM ou <em>Document Object Model</em> est la représentation, sous forme d'un "arbre", du document HTML.
 </blockquote>
 
-Dans cet arbre, le "noeud" ou **élément** de plus haut niveau correspond à la balise `<html>`.
-Ce noeud "racine" a des noeuds "enfants" indiqués par `<head>` et `<body>`.
+La "racine" de cet arbre est accessible à JS via la variable globale `document`.
+Ce "noeud" racine a un "enfant" correspondant à la balise `<html>`.
+Celui-ci, à son tour, a des noeuds enfants correspondant à `<head>` et `<body>`...
+Et ainsi de suite.
 
-Tape ceci dans la console :
+On va examiner cette variable. Ajoute ceci entre les balises `<script>` (tu peux supprimer le contenu ajouté précédemment) :
 ```javascript
-console.log(document.getElementsByTagName('html'))
+console.dir(document);
 ```
+<small>`console.dir()` car `console.log()` sous Chrome ne montre pas les <em>propriétés</em> de l'objet `document`, qui est d'un type particulier ("classe" `HTMLDocument`).</small>
 
-Ici on a utilisé `getElementsByTagName()` qui permet de récupérer **tous** les noeuds
-correspondant à une certaine balise (tag). Il y a forcément **une seule** balise
-`<html>` dans un document valide, donc on obtient un tableau avec un élément.
-
-Tu dois apparaître quelque chose comme `[html]`. Clique dessus pour le "déplier".
-
-Tu peux constater que cet élément/noeud a de nombreuses propriétés, comme `innerHTML` (le contenu HTML),
-`style` (les propriétés CSS), et `children`. "Déplie" le contenu de cette dernière : on y
-on trouve logiquement les noeuds `head` et `body`. En examinant les `children` de cette façon
-à partir du noeud racine, on peut explorer tout l'arbre.
+Tu dois voir s'afficher un `#document` sous Chrome, ou `HTMLDocument` sous Firefox, avec une petite flèche sur sa gauche permettant de le "déplier".

+ 34 - 0
react-tuto/src/markdown/2. Manipuler le HTML/02. Récupérer un élément.md

@@ -0,0 +1,34 @@
+On vient de voir la méthode `document.getElementsByTagName()`. D'autres méthodes
+semblables existent :
+* `document.getElementsByClassName()` pour récupérer **les** élément**s** auxquels
+on a donné une certaine classe CSS via l'attribut `class`.
+* `document.getElementById()` pour récupérer **un** élément par son attribut `id`.
+
+Essaie ceci dans le document HTML :
+```html
+<p id="paragraphe">Du texte et <span>encore du texte</span></p>
+<script>
+var paragraphe = document.getElementById('paragraphe');
+console.log([paragraphe]);
+</script>
+```
+
+Remarque : on crée un tableau avec l'élément récupéré car Chrome empêche de "déplier" un élément seul
+(pas nécessaire sous Firefox).
+
+Examine ce qu'il y a sous `children`, mais également sous `childNodes`. Il y a une petite différence.
+
+<blockquote>
+<ul>
+  <li><code>children</code> contient les noeuds correspondant à des balises HTML.</li>
+  <li><code>childNodes</code> contient les noeuds correspondant à des balises HTML <em>et</em> les noeuds de texte.</li>
+</ul>
+</blockquote>
+
+Ici, le noeud de texte situé directement sous la balise paragraphe contient
+`"Du texte et "` (visible dans la propriété `data` si tu déplies le 1er des `childNodes`).
+
+Une balise peut contenir - ou pas - un ou des noeuds de texte. Une balise "auto-fermante" comme celle-ci n'en contient pas :
+```html
+<img src="image.jpg" alt="Une image" />
+```

+ 22 - 0
react-tuto/src/markdown/2. Manipuler le HTML/03. Ajouter un élément.md

@@ -0,0 +1,22 @@
+On va ajouter un élément au document grâce à la méthode `createElement()` qui prend
+en argument un nom de balise HTML (`div`, `p`, `img`, etc.).
+
+Cet exemple est adapté de la [doc de cette fonction](https://developer.mozilla.org/fr/docs/Web/API/Document/createElement).
+```javascript
+var nouveauDiv = document.createElement("div");
+var nouveauContenu = document.createTextNode("Salutations !");
+nouveauDiv.appendChild(nouveauContenu);
+
+var body = document.getElementsByTagName("body")[0];
+body.appendChild(nouveauDiv);
+```
+Remarque l'utilisation de `[0]` sur la ligne où on récupère le `body` : nécessaire,
+car pour rappel, `getElementsByTagName()` renvoie un <em>tableau</em> d'éléments.
+
+Dans l'ordre on a :
+<ol>
+  <li>Créé un élément `div`. &Agrave; ce stade la div existe, mais n'est située nulle part dans l'arborescence HTML.</li>
+  <li>Créé un noeud de texte. Idem : le noeud existe mais n'est associé à aucun élément.</li>
+  <li>Ajouté le noeud de texte au `div`.</div>
+  <li>Ajouté le `div` au corps du document HTML.
+</ul>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 1
react-tuto/src/resources/markdown.json