javascript - 将数据添加到div时如何自动滚动到底部
问题描述
我正在制作一个网络聊天应用程序,在其中添加了一些很酷的功能,例如清除聊天按钮等等......
但我面临这个问题..
每当我附加超过 div 高度的更多消息时,它会显示滚动条但确实不要向下滚动以向客户端显示新消息。有人可以帮我解决这个问题吗?
这是它的 index.html 代码:(我无法发送 server.js 代码,因为它由 node.js 运行)
var socketio = io();
function update(list)
{
for(var i = 0; i < list.length; i++)
{
$("#users").append("" + list[i] + ", ");
}
}
// block
$("#login-form").submit(function(event){
event.preventDefault();
if($("#username").val() == "" || $("#username").val() == " ")
{
alert("Please enter a valid username.");
}
else
{
$username = $("#username").val();
$("#total").hide();
$("#chat-area").show();
$("#messages").html("");
socketio.emit("has connected", $username);
}
});
$("#message-form").submit(function(event){
event.preventDefault();
if($("#message").val() == "" || $("#message").val() == " ")
{
alert("Please enter a message.");
}
else
{
socketio.emit("new message", {username: $username, message: $("#message").val()});
$("#message").val("");
}
});
socketio.on("has connected", function(data) {
$("#users").html("");
update(data.usersList);
$("#messages").append("<li><i><b>"+ data.username +"</b> has connected</i></li>");
});
socketio.on("has disconnected", function(data) {
$("#users").html("");
update(data.usersList);
$("#messages").append("<li><i><b>"+ data.username +"</b> has disconnected</i></li>");
});
socketio.on("new message", function(data) {
if(data.username == $username)
{
$("#messages").append("<li><b>You</b>: " + data.message + "</li>");
}
else
{
$("#messages").append("<li><b>" + data.username + "</b>: " + data.message + "</li>");
}
});
当新消息附加到标签<ul>
中时,有人可以编辑它以使其自动滚动。<div>
注意:它的 id<ul>
是“消息”。
解决方案
让我们假设您的 div 的 id 为“#div1”。然后你可以这样做:
$("#div1").animate({ scrollTop: $('#div1').prop("scrollHeight")}, 1000);
推荐阅读
- sql - 尝试连接到 SSAS 以连接到 SSMS 中的 PBI 工作区
- server - 是否有可能以类似于网络抓取的方式抓取计算机程序?
- c# - 有没有一种通用的方法来获取组件字段的名称?
- react-native - javascript应用程序中的编码
- amazon-web-services - 对象存储(例如 S3)和基于列的技术之间有什么区别
- haskell - 何时使用 Data.Coerce?
- javascript - 斐波那契数列函数产生不正确的值
- javascript - msg.mentions.users.first(),不运行
- c++ - 究竟什么是 std::thread?
- spring - Mockito 模拟 RestTemplate 产生 NullPointerException