Mit Javascript zu einem Teil im HTML Dokument springen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

https://developer.mozilla.org/de/docs/Web/API/Element/scrollIntoView

Ich hab es noch nie versucht, sollte allerdings funktionieren.

Du erstellst eine Variable mit deinem Ziel:

var target = document.getElementById("example-id");

Und dann scrollst du mit:

target.scrollIntoView({block: "end", behavior: "smooth"});

Wenn ich das jetzt richtig verstehe, macht das Block Attribute bis wohin du scrollst und behavior macht es Smoother (Mit Animation anstatt diese "Teleportation").

white47583 
Fragesteller
 08.06.2022, 12:49

OK ! Danke ich werde das jetzt gleich in meiner Datei testen und gebe dir dann eine Rückmeldung, ob es geklappt hat. Vielen Dank !

0
white47583 
Fragesteller
 08.06.2022, 12:50

Ohh und wenn ich das richtig verstehe ist das 2. CSS Code oder ?

0
PWolff  08.06.2022, 13:21
@white47583

Meinst du

{block: "end", behavior: "smooth"}

? - Nein, das ist "JSON" - "JavaScript Object Notation". CSS hat diese Darstellungsform im Wesentlichen übernommen. (Allerdings überrascht mich, dass developer.mozilla.org fehlerhaftes JSON verwendet - die Namen der Elemente MÜSSEN lt. JSON-Spezifikation in doppelten Anführungszeichen stehen; hier:

{"block": "end", "behavior": "smooth"}

Ich wüsste jetzt aber keinen JavaScript-Interpreter, der die Form ohne Anführungszeichen nicht akzeptieren würde (sofern es nur ein gültiger JavaScript-Name ist).

0
iNeedHelp961  08.06.2022, 13:21
@white47583

Jetzt wo du es sagst. Ich glaube das sind tatsächlich sogar beides CSS Attribute. Musste ausprobieren

0
iNeedHelp961  08.06.2022, 13:22
@PWolff

Ja, es ist JSON. Aber JSON ist ja nur zum Auslesen, am Ende kommt es zu CSS.

0
white47583 
Fragesteller
 08.06.2022, 13:43

Also ich habe es getestet. Leider hat es nicht funktioniert. Target wird nicht definiert, obwohl ich die richtige Id verwendet habe.

Die Seite wird neu geladen, in der Console wird uncaught ausgegeben. Ich habe über die Console versucht target auszugeben, aber dieses wurde nicht definiert. Wahrscheinlich, weil die Seite neu geladen wurde.

Ich erkundige mich nochmal im Internet. Falls einer von euch eine Lösung hätte, würde ich mich sehr freuen. Danke

0
iNeedHelp961  08.06.2022, 14:11
@white47583

Okay, 2 Lösungen hätte ich noch. Aber das target nicht Defeniert wird hat nichts mit dem Code zu tun, denke ich. Also halt irgendwas ist eindeutig Falsch die Console sollte mehr sagen als "Uncaught".

Also Option 1 Wäre du machst es erstmal ohne Attribute, nur:

element.scrollIntoView();

Oder was noch geht, du gibst erstmal dem Element das du willst eine ID, beispielsweiße "test-id". Nun kannst du machen:

location.href = "#test-id";

Ich glaub das ging aber auch wenn du machst:

window.location = "#test-id";
0
white47583 
Fragesteller
 08.06.2022, 14:19

OK. Ich teste das kurz

0
white47583 
Fragesteller
 08.06.2022, 14:23

Also ich habe es getestet und das 2. Funktioniert auf jeden Fall schon mal. Nur eine Frage bei der 1. Methode muss ich statt Element etwas anderes angeben ? Bzw. muss ich dort die Id, classe oder den Namen des HTML Elements angeben

0
white47583 
Fragesteller
 08.06.2022, 14:31

Also für dich die Info ich habe meinen Fehler gefunden. Vielen Vielen Dank für deine Bemühungen und deine Zeit. Du hast mir echt sehr geholfen. Noch einen schönen Tag !

1