io: JavaScript (this.pathname): In Konsole d. Inspektors undefined

Das folgende 15 Zeilen Skript eines sehr guten JavaScript Programmierers enthält in Zeile 4:

this.pathname

Skript auf GitHub: https://gist.github.com/planetoftheweb/6729f849d7db31061b2e

Laut meiner Web Entwickler Konsole im Browser ist es undefined. Ich bin JavaScript-Laie. Ist das Skript fehlerhaft bzw. veraltet? Meine Website nutzt jQuery v3.3.1.

Hintergrund: Das Skript soll auf einer Bootstrap* Seite dafür sorgen dass Sprungziele angeklickter Menülinks nicht von dem oben stets mitwandernden Navigationsmenü verdeckt werden. Das funktioniert prima. Aber seit ich dieses Skript verwende klappen Menüdropdowns im Navigationsmenü nicht mehr von selbst zu. Auch die Adresszeile des Browsers wird nicht mehr aktualisiert. Obwohl per Navigationsmenü andere Anker angesprungen wurden.

*Bootstrap ist ein Satz vorgefertigter CSS-Klassen & JavaScript-Schnipsel um schnell Websites zu erstellen.

  1. Servus io,

    das Script des sehr guten Javascript Programmierers fängt so an:

    $('.navbar a[href*=\#]:not([href=\#])').click(function() {

    Es wird per jQuery versucht, Anker-Links zu selektieren und auf diese eine Funktion zu binden, die beim click-Event ausgeführt wird.

    Im ersten Schritt würde ich gucken, ob mit $('.navbar a[href*=\\#]:not([href=\\#])') auf deiner Seite überhaupt Anker selektiert werden.

    this.pathname

    Du kannst das leider nicht einfach so in die Konsole packen, ausführen und hoffen, dass was gutes bei rauskommt. this ist im Falle des Scripts ein Zeiger auf ein a-Element, genauer auf das a-Element, das gerade ein click-Event geschmissen hat.

    Laut meiner Web Entwickler Konsole im Browser ist es undefined.

    this ist, wenn einfach in der Konsole ausgeführt: window

    window.pathname ist undefined. Da hat deine Konsole recht.

    ciao

    --
    "Sir, we are surrounded" - "Excellent, we can attack in any direction!"
    1. Wunderbar erklärt. Danke!