我在Stackoverflow上找到了一个解决方案,但我无法正常工作
...
<div class="panel-body">
<ul id="mtchat" class="chat">
</ul>
</div>
...
这里是js,它添加了新的<li>
,但滚动不起作用
worker();
function worker() {
// ajax request deleted
updateChat();
setTimeout(worker, 1000);
};
function updateChat() {
$('#mtchat').append('<li class="right clearfix">Hallo</li>');
var height = $('#mtchat')[0].scrollHeight;
var dheight = $('#mtchat').height();
var scrolling = height - dheight;
$('#mtchat').scrollTop(scrolling);
console.log('height:'+height);
console.log('dheight:'+dheight);
}
在控制台中,即使溢出开始,我也可以看到scrollHeight
和Height
始终相同。
我做了JsBin
答案 0 :(得分:2)
选中此jsfiddle
在这里,worker()
方法只被调用一次,而这只是为我们设置的东西:
button
点击代码:
function worker() {
$('#mtchat').append('<li class="right clearfix">Hallo</li>');
// ajax request deleted
setTimeout(updateChat(), 1000);
$("#btn-chat").on("click", function(){
var text = $('#btn-input');
$('#mtchat').append('<li class="right clearfix">'+ text.val() +'</li>');
text.val('');
});
};
function updateChat() {
var height = document.getElementById('mtchat').scrollHeight; - $('#mtchat').height();
$('#mtchat').scrollTop(height);
}
答案 1 :(得分:0)
您的JS Bin不包含头部的jquery库。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
在head
标记
还应修复以下行:
var height = document.getElementById('mtchat').scrollHeight; - $('#mtchat').height();
到
var height = $('#mtchat')[0].scrollHeight - $('#mtchat').height();
$('#mtchat')[0].scrollHeight
是编写document.getElementById('mtchat').scrollHeight
因为你在其他地方使用jquery。
答案 2 :(得分:0)
我现在已经想通了。
.panel-body
旨在overflow
,但我检查了scrollHeight
中<ul>
的{{1}}。