我正在尝试做一个自动滚动的div,当它到达最后的时候会转到顶部。但是它不起作用...
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);
}
超文本:
<div id='pannel' style="height:200px;overflow:auto" onmouseover="sleepScroll()">
<p>...</p><!-- long text -->
</div>
之后,我将需要找到如何停止滚动时,"onmouseover"发生。
编辑:我没有把问题解释清楚,事实上,我曾经尝试过这样的做法:
if (scrollPannel.count > pannel.scrollHeight)
{
scrollPannel.count = 0;
}
问题是scrollHeight看起来比div内部文本大,所以返回顶部要花很多时间。
所以我需要一个元素属性,我可以使用它的值来与我的计数变量进行比较。然而,我不知道Javascript很多,我找不到任何东西。我希望它是一样简单,因为我认为它。
6条答案
按热度按时间unhi4e5o1#
试试看:
应该够你用了。
lawou6xi2#
可以尝试使用scrollHeight属性。
https://developer.mozilla.org/en-US/docs/Web/API/element.scrollHeight
w41d8nur3#
我的解决方案涉及到jQuery,希望这不是一个问题。
JavaScript语言:
超文本:
说明:内部元素
<p>
的jQuery的.height()
为我们提供了所需的实际高度,但还不足以到达底部,因为这发生在我们到达元素的高度之前。一个小小的调查表明scrollTop()
的"顶部"大约在原始div
高度的一半以内。您可能需要试用divHeight
以获得所需的确切结果。当然,我还包括了停止和继续滚动的方法。
祝你好运!
v9tzhpje4#
您应该使用
scrollHeight
属性,但要调用它,需要使用如下索引:smdncfj35#
如果你把scrollTop和scrollLeft设置成很高的值,它们只会被设置成最大允许值,我想这正是你所需要的,如果你愿意,你可以用它们来计算滚动中心。
参见片段示例。
t9aqgxwy6#
我有一个办法......