Hello out there!
weil das durch die nächste mit abgedeckt wird. (Dann muss auch die Zuweisung an eine Variable '
anker' nicht sein.)
bahnhof, bahnhof, bahnhof?
Wenn 'anker == ""', dann ist auch 'document.getElementById(anker) == null'. Die doppelte Abfrage ist also nicht nötig.
|
document.getElementById(anker)' benutzt du nochmal, also deshalb das „in Variable zwischenspeichern“, dann muss das Element nicht ein zweites Mal gesucht werden.
bahnhof, bahnhof, bahnhof, bahnhof?
Bei Aufruf von 'document.getElementById(anker)' wird der Elementenbaum nach dem Element 'anker' durchsucht; das kostet Zeit. Bei wiederholtem Aufruf 'document.getElementById(anker).focus()' wird erneut der Elementenbaum nach dem Element 'anker' durchsucht. Da ist es clever, sich die Referenz in einer Variablen zu merken:
var toFocus = document.getElementById(anker);
toFocus.focus();
Weil derletztekick 'window.location.hash' mehrmals verwendet hatte, hatte er sich die Referenz in der Variablen 'anker' gemerkt.
Da aber eine if-Abfrage entfallen kann, ist das nicht nötig, 'window.location.hash' kann gleich als Argument für 'document.getElementById()' genutzt werden, wie ich schon sagte.
So dachten derletztekick und ich, bis uns wahsaga eines besseren belehrte: 'window.location.hash' ist ein String, der am Anfang "#" enthält (wenn ein Anker in dem URI enthalten ist). Auf diesen kannst du also die Methode 'substr()' anwenden.
Wie du in deren bereits verlinkten Beschreibung nachlesen kannst, ist das "#" das 0. Zeichen; du möchtest also ab dem 1. extrahieren. Und zwar bis zum Ende, deshalb entfällt der zweite optionale Parameter; das Ganze sieht nun so aus: 'window.location.hash.substr(1)'
Das nun als Argument für 'document.getElementById()' und die Referenz gemerkt:
var toFocus = document.getElementById(window.location.hash.substr(1));
Nun kommt die Abfrage, ob das Ding wirklich existiert; nur dann kannst du die Methode 'focus()' darauf anwenden:
if (toFocus)
toFocus.focus();
('toFocus' wird von 'if' als wahr interpretiert, wenn es nicht 'null' ist; der Vergleich 'toFocus != null' ist nicht nötig.)
Geschafft: http://gunnarbittersmann.de/2006/focus.html
See ya up the road,
Gunnar
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)