11 of 17 menu

Fout met skakel-oorgang in JavaScript

Kom ons ontleed die fout wat met onverwagte skakel-oorgang verband hou. Laat ons vir die voorbeeld die volgende skakel hê:

<a href="">skakel</a>

Laat ons ons skakel in 'n veranderlike kry:

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

Laat ons 'n klik-hanteraar aan ons skakel koppel:

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

En hier wag 'n verrassing op ons. Die kode is korrek geskryf, maar die afvoer verskyn nie in die konsole nie. Die saak is dat daar by 'n klik 'n oorgang volgens die skakel plaasvind. Aangesien niks in die href-kenmerk gespesifiseer is nie, verwys die skakel eenvoudig na die huidige bladsy.

Dit beteken dat 'n klik op die skakel lei tot die herlaai van die bladsy. Dit wil sê, ons data word in die konsole vertoon, dan herlaai die bladsy, en die konsole word leeg.

As jy mooi kyk, kan jy sien hoe die data in die oomblik van die klik vir 'n oomblik in die konsole verskyn, en dan verdwyn. Dit is die kenmerkende teken van hierdie fout.

Kom ons kyk hoe ons hierdie probleem kan oplos.

Oplossing een

In die href van die skakel moet jy 'n hekjel (#) plaas. Dit sal daartoe lei dat die skakel na 'n spesifieke plek op die huidige bladsy wys en by 'n klik op die skakel sal daar nie 'n herlaai wees nie. Laat ons dit doen:

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

Oplossing twee

'n Meer gevorderde manier is om die verstekaksie te kanselleer met behulp van die preventDefault-metode:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });
Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp