Javascript 自动和/或持续向下滚动页面
我有一个项目,使用javascript和MySQL不断/定期更新的数据库在html页面上不断写入文本 当文本开始从窗口中写入时,我想自动向下滚动,但我没有找到方法,你能帮我吗 以下是实际代码:Javascript 自动和/或持续向下滚动页面,javascript,html,css,Javascript,Html,Css,我有一个项目,使用javascript和MySQL不断/定期更新的数据库在html页面上不断写入文本 当文本开始从窗口中写入时,我想自动向下滚动,但我没有找到方法,你能帮我吗 以下是实际代码: <head> <div id="header"></div> <div id="body"></div> <div id="footer"></div> <script type = "t
<head>
<div id="header"></div>
<div id="body"></div>
<div id="footer"></div>
<script type = "text/javascript" src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<style type="text/css">
#myTable{
width:"90%";
min-width:250px;
white-space: pre-wrap;
word-wrap:break-word;
position:absolute;
border:solid 0px;
top:-600px;
left:320px;
right:320px;
bottom:0px;
font-size:100px;
font-family:"Times New Roman", Times, serif;
text-align:left
}
</style>
</head>
<body>
<div id="myTable"> <div>
<script type="text/javascript">
var skip = 0;
function get_data(index) {
$.ajax({
url : 'getData.php',
type : 'POST',
data: ({"skip":skip}),
success : function(data) {
if(data && data.trim()!='') {
skip = skip+1;
showText("#myTable", data, 0, 20);
}
else {
setTimeout(function () { get_data(skip); }, 30000);
}
},
error : function(request,error)
{
alert("Request error : "+JSON.stringify(request));
}
});
}
function showText(target, message, index, interval) {
if (index < message.length) {
$(target).append(message[index++]);
setTimeout(function () { showText(target, message, index, interval); }, interval);
}
else {
get_data(skip);
}
}
//var period = 10000; //NOTE: period is passed in milliseconds
get_data(skip);
//setInterval(page_refresh, period);
</script>
</body>
#myTable{
宽度:“90%”;
最小宽度:250px;
空白:预包装;
单词包装:打断单词;
位置:绝对位置;
边框:实心0px;
顶部:-600px;
左:320px;
右:320px;
底部:0px;
字体大小:100px;
字体系列:“泰晤士报新罗马”,泰晤士报,衬线;
文本对齐:左对齐
}
var-skip=0;
函数获取数据(索引){
$.ajax({
url:'getData.php',
键入:“POST”,
数据:({“跳过”:跳过}),
成功:函数(数据){
如果(数据和数据修剪()!=“”){
跳过=跳过+1;
showText(“myTable”,数据,0,20);
}
否则{
setTimeout(函数(){get_data(skip);},30000);
}
},
错误:函数(请求、错误)
{
警报(“请求错误:+JSON.stringify(请求));
}
});
}
函数showText(目标、消息、索引、间隔){
if(索引<消息长度){
$(目标).append(消息[index++]);
setTimeout(函数(){showText(目标、消息、索引、间隔);},间隔);
}
否则{
获取_数据(跳过);
}
}
//var周期=10000//注意:周期以毫秒为单位传递
获取_数据(跳过);
//设置间隔(页面刷新,周期);
和测试页面,这样您就可以看到内容了:您可以使用香草javascript并在填充内容后滚动
success : function(data) {
if(data && data.trim()!='') {
skip = skip+1;
showText("#myTable", data, 0, 20);
let table = document.querySelector('#myTable');
table.scrollTop = table.scrollHeight;
}
如果需要,可以将document.body.scrollHeight更改为表元素
然后确保css给你的表格一个高度和溢出:隐藏
更新:我最近注意到您正在使用jquery,这个示例只是设置了一个监视程序并滚动内容更改
$('#myTable').css('overflow', 'hidden').bind('DOMNodeInserted', function () {
this.scrollTop = this.scrollHeight;
});
我不确定。看起来他们是用计时器做的,就像每x秒滚动一次。有没有可能在屏幕外写东西时向下滚动?这似乎是一种方法,但当我这样写的时候,它不会向下滚动。我试过了身体和桌子。也许我做错了什么?我在尝试var objDiv=document.getElementById(“myTable”)时更新了页面;window.scrollTop=objDiv.scrollHeight;它也不起作用。我真的不知道我遗漏了什么。我更新了我的答案,使用scrollTop和scrollHeight,只需要在元素上加上一个高度:hidden;通过在函数“showText”中使用它,它工作得非常好。谢谢:)看到它是如何工作的,我可能还有两个关于您的代码的问题:-您知道是否可以平滑滚动吗?-你知道它是允许用户在写的时候还是不写的时候向上滚动吗?如果你能接受接受,那将很感激:),目前,它被设置为在内容更改时连续向下滚动,因此用户将无法滚动。你必须阻止它。