Ich versuche, eine Webseite mit einer Tabelle von Elementen zu erstellen, aus denen der Benutzer auswählen kann. Die Anzahl der Elemente kann so klein wie ein einzelnes Element sein, wird aber auch so groß wie etwa 120. Ich möchte nicht, dass der Tisch die Seite ausdehnt, also stopfe ich ihn in sein eigenes <div>
Tag mit einer definierten Höhe und eine vertikale Bildlaufleiste. Ein nackten Knochen Beispiel:Wie programmiere ich ein HTML-Element?
<div style="width:100px; height:100px; overflow-y:scroll; overflow-x:hidden;">
<table>
<tr><td>item 1</td></tr>
<tr><td>item 2</td></tr>
<tr><td>item 3</td></tr>
<tr><td>item 4</td></tr>
<tr><td>item 5</td></tr>
<tr><td>item 6</td></tr>
<tr><td>item 7</td></tr>
<tr><td>item 8</td></tr>
<tr style="color:#00aa00"><td>item 9</td></tr>
</table>
</div>
In diesem Beispiel ist die Tabelle, die in einem vertikal-Scrolling-Bereich und das aktive Element ist die letzte in der Tabelle. So weit, ist es gut.
Meine Frage ist: Beim Aktualisieren dieser Tabelle, wie kann ich es so einstellen, dass es automatisch bis zum Ende scrollt? Wenn zum Beispiel die Seite erzeugt wird, sollte Element 9 automatisch ausgewählt werden; Die Benutzeroberfläche sollte dieses Element bereits in der Liste markieren und das bedeutet, dass die Bildlaufleiste automatisch auf das Ende gesetzt wird.
Ich sehe keinen Weg, es mit dem <div>
Tag zu tun (obwohl ich etwas vermisse). Muss ich ein Tag verwenden, wie? Ich denke, wenn jede Zeile der Tabelle ein Anker-Tag hat, dann könnte die Scroll-Position auf diese Weise gesetzt werden. Ich bin mir nicht ganz sicher, wie ich das machen soll, also dachte ich, ich würde fragen.
Ich weiß, es gibt wahrscheinlich Datentabelle plugins, die ich verwenden kann, um dies zu tun (Ich habe YUI zuvor verwendet, und ich habe nie herausgefunden, ob es dieses spezielle Problem lösen könnte). Aber das scheint einfach genug zu sein, dass ich nicht das Gefühl habe, dass ich irgendein Plugin importieren müsste, das leicht als eine ganze In-Browser-Tabelle verwendet werden könnte.
Danke für alles. Ihr Beispiel funktioniert wunderbar. Dies gibt mir auch eine gute Strategie zum Aktualisieren der markierten Zelle. Leider kann ich scrollTop nicht aufrufen, um meinen Code zu übernehmen. I console.log() divEl.scrollTop sowohl vor als auch nach dem Setzen und der Wert bleibt 0. Gibt es etwas, was ich tun muss, um die Eigenschaft schreibbar zu machen? –
Hier muss etwas anderes los sein, denn wenn ich die vertikale Bildlaufleiste manuell einstelle, bleibt scrollTop immer noch 0. –
Ich habe eine etwas andere Lösung gefunden, die das Richtige tut, was ich brauche: "selectedTrEl.scrollIntoView (false);" . Danke, dass Sie mich in die richtige Richtung weisen. –