HTML nous offre des composants de formulaire standards pour permettre à l'utilisateur de saisir des données. HTML5 ajoute des types spécifiques(date, couleur, slider, ...)
📚 developer.mozilla.org/fr/docs/Web/HTML/Element#Formulaires
📚 htmlreference.io/forms/
📚 w3schools.com/html/html_form_elements.asp
ℹ️ Respecter la sémantique dans les formulaires
D'abord récupérer l'élément concerné
const element = document.getElementById('...'); const element = document.querySelector('...'); // ... const elements = document.getElementsByName('...'); // tableau [] const elements = document.querySelectorAll('...'); // tableau []
Ensuite, récupérer la valeur ou l'état
element.value // Valeur associée au composant // ValueAsDate valueAsNumber element.checked // radio/check indique si activé optionElement.selected // <options> d'un select, indique si sélectionné
On peut demander aux éléments du DOM de nous informer de certains changements d’état et y réagir via JavaScript.
📚 Liste des événements disponibles
On spécifie directement le nom de l’événement en tant qu’attribut HTML et la valeur est le code JavaScript à exécuter.
<!-- onevenement="code javascript;" --> <button type="button" onclick="alert('Bonjour!');">Cliquez ici!</button> <!-- On peut spécifier plusieurs événements et appeler une fonction --> <button id="btn" type="button" onclick="hello();" onmouseover="document.getElementById('btn').innerText = 'Oui cliquez!';" onmouseout="document.getElementById('btn').innerText = 'Cliquez ici!';">Cliquez ici!</button> <script> function hello() { alert('Bonjour de la fonction!'); } </script>
On peut également assigner directement un événement à partir des propriétés correspondantes en JavaScript.
<button id="btn" type="button">Cliquez ici!</button> <script> const btn = document.getElementById('btn'); // On peut spécifier une REFERENCE // vers une fonction par son NOM btn.onclick = hello; // hello SANS les () // On peut également déclarer une fonction ANONYME btn.onmouseover = function() { btn.innerText = 'Oui cliquez!'; }; btn.onmouseout = function() { btn.innerText = 'Cliquez ici!'; }; function hello() { alert('Bonjour fonction standard!'); } </script>
Un élément peut ajouter ou retirer l'écoute: addEventListener ou removeEventListener
📚 addEventListener
📚 removeEventListener
<button id="btn" type="button">Cliquez ici!</button> <script> const btn = document.getElementById('btn'); // On précise le nom de l'événement SANS on btn.addEventListener('click', function() { alert('Bonjour fonction ANONYME'); }); // On peut écouter plusieurs fois le même événement btn.addEventListener('click', hello); btn.addEventListener('mouseover', function() { btn.innerText = 'Oui cliquez!'; }); btn.addEventListener('mouseout', function() { btn.innerText = 'Cliquez ici!'; }); function hello() { alert('Bonjour fonction STANDARD'); // affichera 1 fois btn.removeEventListener('click', hello); // car on remove après } </script>
Quelle est la différence entre les différentes méthodes pour écouter les événements du DOM?
La fonction de l'événement peut recevoir un paramètre contenant ses détails.
ℹ️ Récupérer les données
📚 Données des événements
const items = ['A', 'B', 'C']; for(let i = 0; i < items.length; i++){ const btn = document.createElement('button'); btn.innerHTML = items[i]; btn.onmousedown = mouseDownEvent; // Lier la fonction btn.dataset.myNumber = (i * 10); // 📚 https://developer.mozilla.org/fr/docs/Learn/HTML/Howto/Use_data_attributes document.body.appendChild(btn); } function mouseDownEvent(event) { // event contient les détails de l'événement, event.target représente l'élément déclencheur alert(`${event.target.outerHTML}\n i = ${event.target.dataset.myNumber}\n ${event.button == 0 ? 'gauche' : 'droite'}`); }
Explications des événements
Référence des événements disponibles
Exemples d'utilisation de divers événements
https://htmldom.dev/
👉 Énoncé