13 of 17 menu

Erreur liée à this dans le gestionnaire d'événements en fonction fléchée JavaScript

Dernièrement, il est devenu à la mode d'utiliser des fonctions fléchées partout à la place des fonctions ordinaires. Ces fonctions, cependant, ont un inconvénient - elles ne préservent pas le this. Regardons le problème auquel on peut être confronté à cause de cela.

Supposons que nous ayons un bouton :

<button>text</button>

Obtenons une référence à ce bouton dans une variable :

let button = document.querySelector('button');

Attachons un gestionnaire d'événement au bouton, en utilisant une fonction fléchée :

button.addEventListener('click', () => { console.log(this.textContent); });

C'est là que nous attend une surprise : le this dans la fonction fléchée ne se référera pas à l'élément dans lequel l'événement s'est produit.

Voyons ce que l'on peut faire à ce sujet.

Première solution

On peut renoncer à l'utilisation de this et utiliser la variable à laquelle l'événement est lié :

button.addEventListener('click', () => { console.log(button.textContent); });

Deuxième solution

On peut obtenir l'élément auquel l'événement est lié via event.target :

button.addEventListener('click', (event) => { console.log(event.target.textContent); });

Troisième solution

On peut renoncer à la fonction fléchée et utiliser une fonction ordinaire :

button.addEventListener('click', function() { console.log(this.textContent); });
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser