用了两个setInterval,速度越来越快

ron_xin 2020-01-14 08:31:53
以下代码用于实现TABLE的上下轮动效果。
想在滚完一次后停留3秒再滚动,用了两个setInterval实现,但是速度越来越快。


var tblTop =0;
var RunInterval=1;

$(function init(){
$('.tbl-body tbody').empty();
$('.tbl-header tbody').empty();
GetData();
//alert();
});

function sleep(n) { //n表示的毫秒数
var start = new Date().getTime();
while (true) if (new Date().getTime() - start > n) break;
}  


function GetData(){

jQuery.ajax({
type: "GET",
url: "http://192.168.199.253:81/GNGate/GetLedText.php",
global: false,
dataType: "text",
success: function (xml) {
$('.tbl-body tbody').empty();
$('.tbl-header tbody').empty();
$(xml).find("gateininfo").each(function (i) {
var STATUS ="";
var Remarks ="";
var intime =$(this).children("intime").text();
//console.info("intime"+intime);
var intime2 = new Date(intime); //转换为日期格式 使用 new Date()函数
//console.info(intime2);
var stoptime =$(this).children("stoptime").text();
//console.info("stoptime"+stoptime);
var stoptime2 = new Date(stoptime);//转换为日期格式 使用 new Date()函数
var dtnow = new Date();

var STATUS =$(this).children("STATUS").text();
var Remarks =$(this).children("Remarks").text();

if (dtnow.getTime() < intime2.getTime()) {//Date.getTime()函数比较两个日期之间的大小
//console.info("还没到时间");
if (STATUS=="") {
STATUS ="等候检票Waiting";
};

if (Remarks=="") {
Remarks ="预计入闸时间"+$(this).children("intime2").text();
};
}
else if(dtnow.getTime() > intime2.getTime() && dtnow.getTime() < stoptime2.getTime()) {
//console.info("在期间范围内");
if (STATUS=="") {
STATUS="正在检票Checking in";
};

if (Remarks=="") {
Remarks ="停止入闸时间"+$(this).children("stoptime2").text();
};
}else if (dtnow.getTime() > stoptime2.getTime()) {
//console.info("超过时间了");
if (STATUS=="") {
STATUS="停止入闸";
};

if (Remarks=="") {
Remarks ="";
};
};


str = '<tr>'+
'<td>'+$(this).children("PortName").text()+$(this).children("PortName_EN").text()+'</td>'+
'<td>'+$(this).children("voyagetime").text()+'</td>'+
'<td>'+STATUS+'</td>'+
'<td>'+Remarks+'</td>'+
'</tr>';
$('.tbl-body tbody').append(str);
$('.tbl-header tbody').append(str);
});
},
error:function(res){
alert(res.status);
}
})
};

function Marqueehq(){
var Itemslength =$("#TEST").find("tr").length;
var outerHeight = $('.tbl-body tbody').find("tr").outerHeight();
//if (Itemslength>3) {
if(tblTop <= -outerHeight*Itemslength){
clearInterval(idInt);
idInt =null;
GetData();
tblTop =0;
goTo();
} else {
tblTop -=1;
};
$('.tbl-body').css('top', tblTop+'px');
//}
}

function goTo(){
setTimeout(function(){
var idInt = setInterval(Marqueehq,100);
},3000);
}

var idInt = setInterval(Marqueehq,100);



...全文
862 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
console.log( ) 2020-01-17
  • 打赏
  • 举报
回复
定时器没有清除掉 let 定义定时器 大佬说得对
引用 1 楼 天际的海浪 的回复:
function goTo(){     setTimeout(function(){         idInt = setInterval(Marqueehq,100);//去掉var      },3000); }  
Eirice 2020-01-17
  • 打赏
  • 举报
回复
别用 var 你let 一个啥时没有 ,还有你的写法好复古 es6不香吗
天际的海浪 2020-01-14
  • 打赏
  • 举报
回复
function goTo(){     setTimeout(function(){         idInt = setInterval(Marqueehq,100);//去掉var      },3000); }  

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧