js实现自动滚动以及分页数据请求,解决不同手机scrollTop++兼容问题

发布时间 2023-11-21 17:36:48作者: 蓝色~~之恋

创作不易,主要是为了分享,希望能帮到碰到类似问题的朋友,有帮助的话就给点个赞吧。

 

需求:公司需要实现一份合同的自动滚动预览,以及分页请求下一页数据继续滚动,直到所有合同加载完成就取消滚动。

问题:不同手机使用scrollTop++,会出现+1出现小数点,整数的情况,导致请求下一页的数据无法触发

代码逻辑: 1、页面初始化加载时调后台接口进行请求第一页的数据

                     2、获取滚动区域的scrollTop、scrollHeight、clientHeight

                     3、使用setInterval定时器,进行scrollTop++

                     4、设置请求下一页数据和取消定时器的条件

                  

1、获取滚动区域的Dom元素,例如有个id为box的元素,一定要给box设置高度,否则无法滚动,样式增加overflow-y:scroll
let ele = document.getElementById('box')
2、接口调用第一页的数据进行渲染页面
3、使用定时器进行页面滚动,以及设置请求下一页数据和终止条件
let rollTimer=setInterval(()=>{
     ele.scrollTop++if(ele.scrollTop + ele.clientHeight + 1 >= ele.scrollHeight  ||  ele.scrollTop + ele.clientHeight  = ele.scrollHeight   ||  ele.scrollHeight-ele.scrollTop< ele.clientHeight ){
   //此时再判断当前页数是否等于总页数 比如一共有total:50页,当前是currentSize:10页 
if(currentSize<total){ 当前页数小于总页数,可以进行下一页的请求
//进行请求下一页的逻辑
}else{
   //清除滚动定时器
}
}
})