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
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.
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
<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.
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