javascript - 第一次调用 Setinterval() 后滚动到 div 的底部
问题描述
我做了一个固定高度的评论部分,overflow-y: scroll
我想在那里加载一些带有setInterval
函数的评论。
我的代码的问题是,每updateMessages
调用一次,它就会将我滚动到底部并且我无法向上滚动,因为每一秒我都会被送回底部。如何使用滚动的 div 加载消息,然后在setinterval
不向下滚动的情况下启动功能?
<script>
setInterval(function(){
updateMessages();
},1000);
function updateMessages(){
$.ajax({
url: 'includes/display_discussions.php?id=<?php echo $_GET['id']; ?>',
type: 'POST',
success: function(show_messages){
if(!show_messages.error){
$("#scroll_down").html(show_messages);
var div = document.getElementById("scroll_down");
div.scrollTop = div.scrollHeight;
}
}
});
}
</script>
解决方案
加载消息后,您可以切换一个布尔值,并使用它仅在第一种情况下滚动。然后您可以updateMessages
在页面加载时手动调用一次,并setInterval
每 30 秒调用一次:
var messagesLoaded = false;
function updateMessages() {
$.ajax({
url: 'includes/display_discussions.php?id=<?php echo $_GET["id"]; ?>',
type: "POST",
success: function(show_messages) {
if (!show_messages.error) {
$("#scroll_down").html(show_messages);
if (!messagesLoaded) {
messagesLoaded = true;
var div = document.getElementById("scroll_down");
div.scrollTop = div.scrollHeight;
}
}
}
});
}
document.addEventListener("DOMContentLoaded", updateMessages);
setInterval(updateMessages, 30000);
推荐阅读
- java - 为什么 LWJGL (OpenGL) drawElements 不绘制?
- c# - 查找窗口 Win32
- php - 无法通过 composer 安装最新的 git 版本的分支
- javascript - 从列表中选择值的引导下拉菜单
- latex - wrapfiure 乳胶重叠图像文本的不良形成
- java - jqwik 对已排序数组及其某些元素
- python - 在 Numpy/PyTorch 中矢量化生成一批随机旋转矩阵的最佳方法?
- jquery - JQuery Datatable 不适用于数据透视表
- python - 如何使 1 个或多个列表中的随机字母、数字或符号周围没有引号符号
- arrays - JS - 对包含数组的对象数组进行分组、映射和展平