11 of 17 menu

Lingil klikkimise viga JavaScriptis

Vaatame viga, mis on seotud ootamatu lingile navigeerimisega. Võtame näiteks järgmise lingi:

<a href="">link</a>

Saame lingi muutujasse:

let link = document.querySelector('a');

Seome oma lingiga klikkide töötleja:

link.addEventListener('click', function() { console.log(this.textContent); });

Ja siin ootab meid üllatus. Kood on kirjutatud õigesti, kuid konsooli väljundit ei ilmu. Asi on selles, et klikkimisel toimub navigeerimine lingile. Kuna atribuudis href pole midagi määratud, siis link lihtsalt suunab praegusele lehele.

See tähendab, et lingile klikkimine viib lehe uuesti laadimiseni. See tähendab, et meie andmed kuvatakse konsoolis, seejärel laaditakse leht uuesti, ja konsool muutub tühjaks.

Kui tähelepanelikult vaadata, siis võib näha, kuidas klikkimise hetkel andmed ilmuvaid konsooli hetkeks, enne kui kaovad. See ongi iseloomulik märk sellest veast.

Vaatame, kuidas seda probleemi saab lahendada.

Esimene lahendus

Lingi href-isse tuleb panna trellid (#). See põhjustab selle, et link osutab kindlale kohale praegusel lehel ja klikkimisel lingile uuesti laadimist ei toimu. Teeme selle:

<a href="#">link</a>

Teine lahendus

Täiustatum viis on vaikimisi tegevuse tühistamine meetodi abil preventDefault:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu