Engelein: Listenfeld scrolling funktioniert nicht richtig...

Beitrag lesen

1.) Kann es sein, dass es eine Art Autoscrolling bei Listenfeldern gibt und diese aktiviert ist?

Ich möchte meinen, dass das Verhalten browersabhängig ist. Es gibt gute Gründe sowohl dafür, den ausgewählten Eintrag weiter anzuzeigen als auch dafür, neu hinzukommende Einträge anzuzeigen.

2.) Gibt es in Javascript eine Möglichkeit, festzulegen, welches der oberste, sichtbare Eintrag in einem Listenfeld ist?

Das Listenfeld kennt wie auch andere Elemente (namentlich <textarea>, bei dem ein ähnliches Problem auftreten kann wie du es gerade hast) die Eigenschaften scrollLeft, scrollTop, scrollWidth und scrollHeight. Die letzten beiden geben die absoluten Dimensionen des Inhalts an, d.h. einschließlich dessen, was nicht zu sehen ist. scrollLeft und -Top geben an, welcher Punkt des Inhalts sich gerade links oben im tatsächlichen Anzeigebereich des Elements befindet.
Weiterhin wären da noch clientWidth und -Height, die die Größe des Anzeigebereiches enthalten.

Teilst du clientHeight durch die Anzahl der Einträge, bekommst du die (ungefähre) Anzahl Pixel pro Eintrag. Mit diesem Wert, multipliziert mit der gewünschten Eintragsnummer, kannst du über scrollTop diesen gewünschten Eintrag im Anzeigebereich erscheinen lassen.

Tipp: Firefox zusammen mit der Erweiterung Firebug erlaubt dir, diese DOM-Innereien bequem zu durchforsten.