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

IT技术 javascript jquery html css
2021-01-15 06:40:25

我有一个table的内部div具有以下样式:

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

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

我可以使用哪些 JavaScript 代码来做到这一点?如有必要,我对 JQuery 中的选项持开放态度,但更喜欢 JavaScript 解决方案。

2个回答

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

window.setInterval(function() {
  var elem = document.getElementById('data');
  elem.scrollTop = elem.scrollHeight;
}, 5000);
它向下滚动 90%
2021-03-15 06:40:25
我认为这不是最佳答案。如果你想向上滚动查看数据会发生什么?每 5 秒。它会自动向下滚动,您无法在 5 秒内分析数据...
2021-03-22 06:40:25
@nathan 我正在使用 AngularJS 并且遇到了同样的问题,我的解决方案是创建一个时间为 1 毫秒的 $timeout 包装器,这样它在添加上一个摘要周期的内容后滚动。
2021-04-06 06:40:25
这有效,解决方案对我来说实际上更简单,因为我有一个将数据输入表的函数,所以我可以将代码的第 3 行添加到函数中。谢谢!
2021-04-12 06:40:25
我看到了性能问题,在执行这种类型的滚动时插件会冻结。
2021-04-14 06:40:25
var objDiv = document.getElementById("divExample");
objDiv.scrollTop = objDiv.scrollHeight;
你也可以试试这个: function setFocusOnDivWithId(elementId) { const scrollIntoViewOptions = { behavior: "smooth", block: "center" }; document.getElementById(elementId).scrollIntoView(scrollIntoViewOptions); }; setFocusOnDivWithId(elementId);
2021-03-15 06:40:25
你好 Valamas,它不适用于所有主要浏览器。你能帮我吗?
2021-03-20 06:40:25
这确实适用于 chrome 和 Firefox
2021-03-31 06:40:25
@Kushal 它在 chrome 上对我有用!嗨,瓦拉马斯!如果您知道浏览器兼容性问题,请告诉我们。谢谢
2021-04-07 06:40:25