11 of 17 menu

Klaida naršymo per nuorodą JavaScript

Išnagrinėkime klaidą, susijusią su netikėtu naršymu per nuorodą. Pavyzdžiui, tegul yra pateikta tokia nuoroda:

<a href="">nuoroda</a>

Gaukime mūsų nuorodą į kintamąjį:

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

Pririškime prie mūsų nuorodos paspaudimo apdorojimo funkciją:

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

Ir štai čia mūsų laukia staigmena. Kodas parašytas teisingai, tačiau išvestis konsolėje nepasirodo. Reikalas tas, kad paspaudus įvyksta naršymas per nuorodą. Kadangi atribute href nieko nenurodyta, tai nuoroda tiesiog nukreipia į dabartinį puslapį.

Tai reiškia, kad paspaudimas ant nuorodos sukelia puslapio perkrovimą. Tai yra, mūsų duomenys išvedami į konsolę, tada puslapis persikrauna, ir konsolė tampa tuščia.

Jei atidžiai pažiūrėtumėte, tai galima pamatyti, kaip paspaudimo momentu duomenys pasirodo konsolėje akimirksniui, o tada išnyksta. Tai ir yra būdingas šios klaidos požymis.

Pažiūrėkime, kaip galima išspręsti šią problemą.

Pirmasis sprendimas

Į href nuorodos reikia įdėti grotažymį. Tai sukels tai, kad nuoroda rodys į konkretų dabartinio puslapio vietą ir paspaudus ant nuorodos perkrovimo nebus. Padarykime tai:

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

Antrasis sprendimas

Pažangesnis būdas yra numatyto veiksmo atšaukimas naudojant metodą preventDefault:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });
Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti