Comment obtenir le réel de défilement de la hauteur de la div (dire, intérieure taille du texte)
Je suis en train de faire un défilement automatique div qui vont à son sommet lorsqu'il atteint la fin. Mais ça ne fonctionne pas...
function scrollPannel()
{
var pannel = document.getElementById('pannel');
if (typeof scrollPannel.count == 'undefined')
{
scrollPannel.count = 0;
}
else
{
scrollPannel.count += 2;
}
//trouble is here
if ((scrollPannel.count - pannel.scrollHeight) > pannel.clientHeight)
{
scrollPannel.count = 0;
}
pannel.scrollTop = scrollPannel.count;
setTimeout('scrollPannel()', 500);
}
HTML:
<div id='pannel' style="height:200px;overflow:auto" onmouseover="sleepScroll()">
<p>...</p><!-- long text -->
</div>
Et après, je vais devoir trouver comment arrêter le défilement lors de la "onmouseover" se fait.
EDIT: je n'ai pas expliqué clairement le problème. En fait, j'ai essayé quelque chose comme:
if (scrollPannel.count > pannel.scrollHeight)
{
scrollPannel.count = 0;
}
Le problème est que scrollHeight semble supérieure div intérieure du texte. Donc cela fait beaucoup de temps pour revenir au top.
J'ai donc besoin d'un élément de la propriété de qui je pourrais utiliser la valeur à comparer avec ma variable nombre. Cependant, je ne sais pas Javascript beaucoup et je ne pouvais pas trouver quoi que ce soit. J'espère que c'est aussi simple que je pense à elle.
sleepScroll() est une fonction à mettre en œuvre que je voudrais utiliser pour arrêter le défilement sur l'événement "onmouseover". Dans mon cas, je pense que ce sera un simple clearTimeout ().
OriginalL'auteur kirly | 2013-11-27
Vous devez vous connecter pour publier un commentaire.
Essayer:
Qui devrait faire ce que vous avez besoin.
OriginalL'auteur
Vous pouvez essayer d'utiliser le scrollHeight propriété.
- ce vraiment le travail pour moi, merci
OriginalL'auteur kkaosninja
La solution consiste à jQuery, j'espère que c'est pas un problème.
JavaScript:
HTML:
Explication:
jQuery
.height()
de l'intérieur de l'élément de<p>
nous donne de la hauteur réelle que vous cherchez, mais il n'est pas assez pour atteindre le fond, puisque qu'il se passe avant d'arriver à l'élément de la hauteur. Une petite enquête montre que le "haut" de lascrollTop()
est à mi-chemin à l'intérieur de l'originaldiv
hauteur. Vous devrez peut-être jouer avecdivHeight
d'obtenir exactement les résultats que vous recherchez.Bien sûr, j'ai aussi inclus une méthode pour arrêter et continue de défiler.
Bonne chance!
Je ne pense pas qu'il soit possible d'obtenir de l'élément réel de la hauteur sans l'aide de jQuery. Je vous suggère de prendre un peu de temps à l'apprentissage, c'est un outil très puissant 🙂
OriginalL'auteur Elad Stern
Vous devez utiliser
scrollHeight
propriété, mais pour l'appeler, vous devez utiliser un index comme ça:OriginalL'auteur Dmitry Paranyushkin