11 of 17 menu

Fehler beim Folgen von Links in JavaScript

Lassen Sie uns einen Fehler analysieren, der mit einem unerwarteten Folgen eines Links verbunden ist. Nehmen wir als Beispiel den folgenden Link:

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

Holen wir uns unseren Link in eine Variable:

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

Weisen wir unserem Link einen Klick-Handler zu:

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

Und hier erwartet uns eine Überraschung. Der Code ist korrekt geschrieben, jedoch erscheint nichts in der Konsole. Die Sache ist die, dass beim Klick dem Link gefolgt wird. Da im Attribut href nichts angegeben ist, führt der Link einfach auf die aktuelle Seite.

Das bedeutet, dass ein Klick auf den Link zu einem Neuladen der Seite führt. Das heißt, unsere Daten werden in der Konsole ausgegeben, dann wird die Seite neu geladen, und die Konsole wird leer.

Wenn man genau hinschaut, dann kann man sehen, wie im Moment des Klicks Daten für einen Augenblick in der Konsole erscheinen, um dann zu verschwinden. Das ist das charakteristische Merkmal dieses Fehlers.

Lassen Sie uns anschauen, wie man dieses Problem lösen kann.

Erste Lösung

In href des Links muss man ein Doppelkreuz setzen. Dies führt dazu, dass der Link auf eine bestimmte Stelle der aktuellen Seite verweist und beim Klick auf den Link kein Neuladen erfolgt. Machen wir das:

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

Zweite Lösung

Eine fortgeschrittenere Methode ist das Abbrechen der Standardaktion mit Hilfe der Methode preventDefault:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικά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
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen