11 of 17 menu

Hivatkozásra kattintási hiba JavaScriptben

Elemezzünk egy hibát, amely a hivatkozásra való váratlan navigálással kapcsolatos. Példaként vegyük a következő hivatkozást:

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

Kapjuk meg a hivatkozásunkat egy változóban:

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

Rendeljünk hozzá egy kattintáskezelőt a hivatkozáshoz:

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

És itt vár ránk a meglepetés. A kód helyesen van írva, mégsem jelenik meg a konzolban az üzenet. Az a helyzet, hogy a kattintás a hivatkozás nyomon követését váltja ki. Mivel a href attribútumban semmi nincs megadva, a hivatkozás egyszerűen az aktuális oldalra mutat.

Ez azt jelenti, hogy a hivatkozásra kattintás az oldal újratöltődéséhez vezet. Vagyis az adataink kiíródnak a konzolra, majd az oldal újratöltődik, és a konzol üres lesz.

Ha figyelmesen megfigyeljük, láthatjuk, hogy a kattintás pillanatában az adatok egy pillanatra megjelennek a konzolon, majd eltűnnek. Ez ennek a hibának a jellemző jele.

Nézzük meg, hogyan oldhatjuk meg ezt a problémát.

Első megoldás

A href attribútumba tegyünk egy kettőskeresztet (#). Ez azt eredményezi, hogy a hivatkozás az aktuális oldal egy meghatározott helyére mutat, és a hivatkozásra kattintáskor nem történik újratöltés. Tegyük ezt meg:

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

Második megoldás

Egy fejlettebb módszer az alapértelmezett művelet megakadályozása a preventDefault metódussal:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });
Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás