调用接口,请求数据,渲染报警信息。进行无缝滚动时,滚动不生效

调用接口,请求数据,渲染报警信息。进行无缝滚动时,滚动不生效

请求后台接口的报警数据

1.ajax函数封装

function ajaxget(type,url,data,callback){
	$.ajax({
		type:type,
		url:"http://cloud.byrt.cn/show-sems-web-1.0/a/"+url,		
		data:data,
		async:true,
		dataType : "jsonp",
    	jsonp:'callback', 
   		jsonpCallback:"successCallback", 
   		success : function(res) {
    		   callback(res)            
    	}
	});
}

2、ajax函数调用

ajaxget("get","useElectric/getWarningRecordsDataList",{},function(res){
	console.log(res)
	if(res.code==0){
		for(var i=0;i<res.importWarningRecordsList.length;i++){
			var impor=`
				<li>
					<span title="${res.importWarningRecordsList[i].collectTime}">${res.importWarningRecordsList[i].collectTime}</span>
					<span title="${res.importWarningRecordsList[i].tagName}">${res.importWarningRecordsList[i].tagName}</span>
					<span title="${res.importWarningRecordsList[i].descript}">${res.importWarningRecordsList[i].descript}</span>
					<span style="color: #DA372B;">${res.importWarningRecordsList[i].state==1?"严重":"未知"}</span>
				</li>
			`;
			
		}
		$(".alarm-cont .alarm-one").append(impor);
		for(var i=0;i<res.commonWarningRecordsList.length;i++){
			var common=`
				<li>
					<span title="${res.commonWarningRecordsList[i].collectTime}">${res.commonWarningRecordsList[i].collectTime}</span>
					<span title="${res.commonWarningRecordsList[i].tagName}">${res.commonWarningRecordsList[i].tagName}</span>
					<span title="${res.commonWarningRecordsList[i].descript}">${res.commonWarningRecordsList[i].descript}</span>
					<span style="color: #FFB421;">${res.commonWarningRecordsList[i].state==2?"一般":"未知"}</span>
				</li>			
			`;
			$(".alarm-cont2 .alarm-one").append(common);
		}
	}else{
		return;
	}
})

公共的public函数中进行无缝滚动

//设备告警信息自动轮播函数
function lunBo($cont){
	var speed = 60	
	var $ul=$cont.find('ul:first');
  	var $ul2=$cont.find('ul:last');
  	if($ul.height()<=$cont.height() ){
  		return;			  	 
  	}else{ 	
  		$ul2.html($ul.html()) ;
  		function Marquee() {
	    	if ($ul2[0].offsetTop - $cont[0].scrollTop <= 0) {
	      		$cont[0].scrollTop -= $ul[0].scrollTop
	    	}else {
	      		$cont[0].scrollTop++
	      		if($cont[0].scrollTop>=$cont[0].scrollHeight-$cont[0].clientHeight)
	      			$cont[0].scrollTop=0
	    	}
  		}			  
		var MyMar = setInterval(Marquee, speed)
		$cont.mouseover(()=>clearInterval(MyMar));
	
		$cont.mouseout(()=>{
			MyMar = setInterval(Marquee, speed)
		}); 	
  	}
}

window.onload函数中调用lunBo()函数

此种写法会有bug,请求接口,加载数据会有一定的反应时间。
window.onload之后调用轮播函数,数据还没有请求出来并渲染到页面,所以存放数据的ul一定会为0,为0之后会走轮播函数的if ($ul2[0].offsetTop - $cont[0].scrollTop <= 0) {这步 ,导致数据渲染完成了,数据也不滚动

应该在ajax数据请求成功后调用轮播函数,即$(".alarm-cont2 .alarm-one").append(common);这句话之后调用lunBo()。无缝滚动效果就正常了

记录下 自己愚蠢的一次bug!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值