添加数据时如何自动滚动到div的末尾? [复制]

Posted

技术标签:

【中文标题】添加数据时如何自动滚动到div的末尾? [复制]【英文标题】:How to auto-scroll to end of div when data is added? [duplicate] 【发布时间】:2011-11-10 08:42:23 【问题描述】:

我在div 内有一个table,其样式如下:

#data 
    overflow-x:hidden;
    overflow-y:visible;
    height:500px;

一旦将足够多的数据添加到表中,就会显示一个垂直滚动条。但是,当添加新数据时,我希望 div 元素自动滚动到底部。

我可以使用哪些 javascript 代码来执行此操作?如有必要,我对 JQuery 中的选项持开放态度,但更喜欢 JavaScript 解决方案。

【问题讨论】:

这不是***.com/questions/270612/scroll-to-bottom-of-div 的重复,因为正确答案需要设置计时器。 @LoneCoder:为什么? OP没有提到计时器......他们可以在他们认为合适的任何时间执行标记副本中的滚动代码。事实是,如此笼统地说,这个问题肯定是重复的of some question here on Stack Overflow,这里提出的问题似乎足以满足上述要求。 【参考方案1】:
var objDiv = document.getElementById("divExample");
objDiv.scrollTop = objDiv.scrollHeight;

【讨论】:

你好 Valamas,它不适用于所有主流浏览器。你能帮我吗? @Kushal 它在 chrome 上对我有用!嗨瓦拉马斯!如果您知道浏览器兼容性问题,请告诉我们。谢谢 这确实适用于 chrome 和 Firefox 你也可以试试这个:function setFocusOnDivWithId(elementId) const scrollIntoViewOptions = behavior: "smooth", block: "center" ; document.getElementById(elementId).scrollIntoView(scrollIntoViewOptions); ; setFocusOnDivWithId(elementId); 当我使用上面的代码时它工作但也给了额外的底部空白。【参考方案2】:

如果您不知道何时将数据添加到#data,您可以设置一个间隔,每隔几秒将元素的 scrollTop 更新到它的 scrollHeight。如果是控制什么时候添加数据,只要在添加数据后调用下面函数的内部即可。

window.setInterval(function() 
  var elem = document.getElementById('data');
  elem.scrollTop = elem.scrollHeight;
, 5000);

【讨论】:

这行得通,解决方案对我来说实际上更简单,因为我有一个将数据输入表的函数,所以我可以将代码的第 3 行添加到函数中。谢谢! 我看到了性能问题,插件在进行此类滚动时会冻结。 向下滚动 90% @nathan 我在使用 AngularJS 并且遇到了同样的问题,我的解决方案是创建一个时间为 1 毫秒的 $timeout 包装器,这样它在添加上一个摘要周期的内容后会滚动。 我认为这不是最佳答案。如果您想向上滚动查看数据会怎样?每 5 秒。它会自动向下滚动,您无法在 5 秒内分析数据...

以上是关于添加数据时如何自动滚动到div的末尾? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何禁止TreeView.ExpandAll方法自动滚动到树的末尾?

如何使用硒滚动到页面末尾? [复制]

如何不断滚动到多行文本框中的文本末尾? [复制]

添加新行时,如何以编程方式滚动到 Flex Spark Textarea 的末尾?

创建新消息/元素时如何自动滚动到div的底部

滚动到特定 div 类时更改 div 颜色