Wie bestimme ich scrollHeight?


94

Wie bestimme ich scrollHeight einer Division mit CSS-Überlauf: Auto?

Ich habe es versucht:

$('test').scrollHeight();
$('test').height(); but that just returns the size of the div not all the content

Letztendlich versuche ich einen Chat zu erstellen und habe immer die Bildlaufleiste zur aktuellen Nachricht auf dem Bildschirm.

Also dachte ich ungefähr so:

var test = $('test').height();
$('test').scrollTop(test);

Danke dir,

Brian


Was ist falsch an der Verwendung von scrollHeight ()?
Badr Hari

2
@BadrHari: scrollHeight()In jQuery gibt es keine Funktion.
TJ Crowder

es ist $ ('test'). get (0) .scrollHeight ();
JFouad

Antworten:


88

scrollHeight ist eine reguläre Javascript-Eigenschaft, sodass Sie jQuery nicht benötigen.

var test = document.getElementById("foo").scrollHeight;

Vielen Dank! Dies hat bei mir funktioniert: var height = document.getElementById ("chatLog"). ScrollHeight - $ ('# chatLog'). Height (); $ ('# chatLog'). scrollTop (Höhe);
Brian

6
Was ist mit der Browserunterstützung? Alle Hauptversionen von Browsern unterstützen es? IE8 +?
SexyBeast

2
@ Cupidvogel Die verlinkte MDN-Seite sagt IE8 +
Dennis

314

Richtige Wege in jQuery sind -

  • $('#test').prop('scrollHeight') ODER
  • $('#test')[0].scrollHeight ODER
  • $('#test').get(0).scrollHeight

Ich hoffe es hilft.


16
+1 für $ ('# test') [0] .scrollHeight, vorausgesetzt, der Fragesteller verwendet bereits jQuery.
Jackson

12
Dies sollte die akzeptierte Antwort sein, da sie die Frage beantwortet.
Invot

Es sollte die akzeptierte Antwort sein. Beachten Sie, dass für diese propMethode jquery Version 1.6 oder höher erforderlich ist. +1 von mir
Vayne

2
Beachten Sie, dass dies nur die scrollHeight des "ersten" gefundenen Elements zurückgibt. Wenn Elemente derzeit "versteckt" sind, erhalten Sie hier möglicherweise eine Null, auch wenn andere eine positive scrollHeight haben, FWIW :)
rogerdpack

@rogerdpack Guter Punkt, Sir! Obwohl er in diesem Beispiel eine ID anstelle einer Klasse als Selektor verwendet, sollte er in Ordnung sein, aber dennoch ein guter Punkt.
dave4jr
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.