12 of 17 menu

Lingil navigeerimise blokeerimise viga JavaScriptis

Oletame, et meil on link:

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

Saame lingi muutujasse:

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

Seome lingiga klikiöötleja. Samal ajal peatame lingile navigeerimise, et vältida lehe uuesti laadimist:

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

Tundub, et oleme end täielikult kaitsnud ootamatu käitumise eest. Tegelikult see nii ei ole. Asi on selles, et kui tekkib süntaksiviga, JavaScripti koodi lihtsalt ei täideta, lingi blokeerimine ei toimi ja toimub navigeerimine sellele.

Sel juhul me ei näe ei koodi täitmise tulemust ega veateadet konsoolis, sest leht laaditakse uuesti. Teeme meelega vea koodis ja veendume praktikas:

link.addEventListener('click', function(event) { thiss.textContent = 'text'; // süntaksiviga event.preventDefault(); });

Sellisel probleemil on iseloomulik tunnus: kui vaadata konsooli hetkel, kui vajutada lingile, näeme hetkeks punast viga konsoolis, mis peaaegu kohe kaob.

Loomulikult ei jõua me vea teksti läbi lugeda, mis muudab vea leidmise oluliselt raskemaks. On siiski kaval nipp. Tuleb lingi href -atribuuti panna trellid. Sel juhul lingile navigeerimist ei toimu ja me näeme konsooli visatud vea:

<a href="#">link</a>
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