L'interactivité que JS permet avec la page web repose sur un système d'évènements.
Des évènements sont émis lorsque l'utilisateur interagit avec la page web. Chaque évènement est nommé et s'applique à une cible. Exemples d'évènements : * `click` correspond au clic sur un élément (par exemple un lien, un bouton). * `submit` correspond à la soumission d'un formulaire, et ne s'applique qu'à un élément `form`. * `change` correspond au changement de valeur d'un élément de saisie dans un formulaire, comme `input`, `select` ou `textarea`. * `keyup` correspond au relâchement d'une touche dans un élément de saisie, ce qui est subtilement différent (et notamment, ne s'applique pas à un élément comme `select`). Il est ensuite possible d'écouter les évènements, et d'effectuer une action lorsqu'ils surviennent. Pour cela, on attache un gestionnaire ou handler à l'élément sur lequel on veut écouter un évènement. Un handler est une fonction, qui prend en paramètre un objet de type `Event`, qu'on peut avoir besoin d'utiliser. Reprenons le tout premier exemple, le bouton de la section 1.1 : ```html ``` On a attaché au bouton un handler pour l'évènement `click`, en l'attribuant directement dans l'attribut `onclick`. Un élément dispose de propriétés `on*` pour chaque type d'évènement, où `*` est le nom de l'évènement. Cette façon d'attacher un handler directement sur la balise est un peu rudimentaire : on appelle cela du JS "inline", et ce n'est généralement pas considéré comme une bonne pratique. A la place, on préfère attacher les handlers via du code JS. En reprenant l'exemple précédent, avec un `id` pour identifier le bouton : ```html ``` On a attaché un handler pour `click` en attribuant une fonction anonyme à la propriété `onclick`.