diff --git a/PROCHAINE_ETAPE_contact_3.md b/PROCHAINE_ETAPE_contact_3.md new file mode 100644 index 0000000..33d2ec2 --- /dev/null +++ b/PROCHAINE_ETAPE_contact_3.md @@ -0,0 +1,239 @@ +# đ Niveau 4 â DOM propre, donnĂ©es distantes & temps rĂ©el + +Salut MĂ©lissa ! đ + +Suite logique de ce que tu sais dĂ©jĂ faire (tableaux, boucles, `localStorage`, `classList`, Ă©vĂ©nementsâŠ). Quatre modules, du plus simple au plus costaud. Comme d'habitude : un exo Ă la fois, et **â teste** avant de passer au suivant. + +| Module | Notion nouvelle | Exos | +|---|---|---| +| **A. Construire le DOM proprement** | `createElement` / `append` (au lieu de `innerHTML`) | 1 â 2 | +| **B. Aller chercher des donnĂ©es ailleurs** | `fetch`, `async`/`await`, JSON | 3 â 5 | +| **C. Le temps rĂ©el** | `setInterval` | 6 â 7 | +| **D. Le clavier** | Ă©vĂ©nements clavier (`keydown`, `event.key`) | 8 | + +--- + +# đ§± Module A â Construire le HTML sans `innerHTML` + +Pour ton tableau d'Ă©quipe, tu utilises `corps.innerHTML = lignes`. Ăa marche trĂšs bien pour **tes** donnĂ©es. Mais `innerHTML` a deux limites : +- si tu y mets du texte tapĂ© par un **inconnu**, il peut injecter du code (faille de sĂ©curitĂ© dite *XSS*) ; +- ça remplace **tout** d'un coup, difficile de modifier une seule ligne ensuite. + +La mĂ©thode « propre » consiste Ă fabriquer chaque Ă©lĂ©ment **un par un**. + +## đ§© La notion : `createElement` + `textContent` + `append` + +```js +const ligne = document.createElement("tr"); // on crĂ©e une balise