【问题标题】:AutoScrolling in javascript divjavascript div中的自动滚动
【发布时间】:2016-10-25 08:47:51
【问题描述】:

当我在 javascript div 中使用上述函数在聊天框中自动滚动时 但我无法向上滚动到底部。

window.setInterval(function() {
 var elem = document.getElementById('chatlog');
elem.scrollTop = elem.scrollHeight;
}, 10);

聊天日志是我代码中的一个 div,我在上面添加了滚动回复的功能。现在我无法向上滚动。

【问题讨论】:

  • 你想做什么?你能再解释一下吗?
  • chatlog 在我的代码中是 div,我在上面设置了滚动回复的功能,现在我无法向上滚动
  • 你能做个小提琴吗?
  • 这里已经回答了:stackoverflow.com/questions/7303948/…
  • 请确保您的聊天记录元素设置了 height 属性,以便滚动顶部可以工作

标签: javascript html


【解决方案1】:

这是逻辑错误。在您的代码中,每 10 毫秒您的脚本会将 div 滚动到底部。有许多变体如何实现自动滚动行为。其中一个使用标志,它将由复选框(自动滚动)设置。如果选中复选框,脚本将向下滚动,如果取消选中,脚本将不执行任何操作。

类似:

window.setInterval(function() {
 if (needAutoScroll) {
     var elem = document.getElementById('chatlog');
     elem.scrollTop = elem.scrollHeight;
 }
}, 10);

【讨论】:

  • 当您滚动到底部时自动选中该框(如果之前没有手动取消选中)并在您开始向上滚动时自动取消选中该框也可能很聪明。不过,这是更复杂的逻辑,因此需要更多解释。
  • 是的,有可能 :-) 只是问题是:现在我无法向上滚动。所以我提供了一个最简单的决定。
  • 当然。刚刚从您的回答中得到启发 :) 干杯!
  • 非常感谢。我们可以做很棒的卷轴:-)
【解决方案2】:

我的猜测是,因为它每秒都会向下滚动到 div 的底部,所以您无法向上滚动。因此,向上滚动时,您必须清除 setInterval 功能。

你可以试试这个chatlogdiv。

<div id="chatlog" onscroll="myStopFunction()">

function myStopFunction() {

if document.body.scrollTop <= 0 {
 console.log("scrolling down")
} else {
console.log("scrolling up");
 clearInterval(myVar);
}

}

再次向下滚动时,您可以触发setInterval 函数。

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多