Orlok: Javascript fehler

Beitrag lesen

Hallo @mely

Ich habe die onScroll manuell hinzugefügt, aber irgendwie ist er wieder nicht ganz richtig. Er springt sogar manchmal in der falsche Stelle z.B wenn ich auf Test4 Linkmenü klicke er springt dahin, macht er aber die Linkfarbe bei Test3 grün. Und er springt immer noch manchmal zu Anfang siehe Linkbeschreibung

Also. Zunächst mal wäre es wahrscheinlich eine gute Sache, statt die Funktion onScroll nach dem Laden des Dokumentes immer auszuführen, dies nur zu tun, wenn die Seite auch tatsächlich neu geladen und vom Browser automatisch gescrollt wurde, weshalb du es vielleicht besser so schreiben solltest:

document.addEventListener('DOMContentLoaded', function ( ) {
  if (document.documentElement.scrollTop !== 0) {
    onScroll( );
  }
  // ...
});

Davon abgesehen würde ich empfehlen zu versuchen, die if-Bedingung in deiner Funktion onScroll mal anders zu formulieren:

if (refElement.offset( ).top <= scrollPosition + 5) {
  $('nav ul li a').removeClass('active');
  currentLink.addClass('active');
}

Das sieht zwar nicht besonders elegant aus, sollte jetzt aber eigentlich funktionieren, und was den Unterschied zwischen offset() und position() angeht, könntest du zum Beispiel hier mal nachsehen.

Darüber hinaus ist mir auch aufgefallen, dass du in deinem click-Handler noch eine globale Variable produzierst, wo du eigentlich überhaupt keine Variable bräuchtest:

$target = $(target);

Die Zeile kannst du eigentlich löschen und dann bei der Wertzuweisung zwei Zeilen weiter unten direkt Folgendes schreiben:

'scrollTop' : $(target).offset( ).top

Schließlich noch ein kleiner Hinweis zu deiner Antwort: Bitte versuche in Zukunft Vollzitate zu vermeiden und nur die Teile zu zitieren, auf die du dich auch wirklich beziehst. ;-)

Viele Grüße,

Orlok