13 of 17 menu

Kļūda ar this JavaScript bulta notikuma apstrādātājā

Pēdējā laikā ir kļuvis modē izmantot visur bulta funkcijas parasto vietā. Tomēr šīm funkcijām ir viens mīnuss - tās nesaglabā this. Apskatīsim, ar kādu problēmu varam saskarties šī dēļ.

Pieņemsim, ka mums ir poga:

<button>text</button>

Iegūsim šīs pogas atsauci mainīgajā:

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

Pievienosim pogai notikuma apstrādātāju, izmantojot bulta funkciju:

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

Šeit mūs sagaida pārsteigums: this bulta funkcijā norādīs nevis uz elementu, kurā notika notikums.

Apskatīsim, ko ar to var darīt.

Pirmais risinājums

Var atteikties no this izmantošanas un izmantot mainīgo, kurā saglabāta atsauce uz elementu:

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

Otrais risinājums

Var iegūt elementu, kuram piesaistīts notikums, caur event.target:

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

Trešais risinājums

Var atteikties no bulta funkcijas un izmantot parasto funkciju:

button.addEventListener('click', function() { console.log(this.textContent); });
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt