创作不易,主要是为了分享,希望能帮到碰到类似问题的朋友,有帮助的话就给点个赞吧。
需求:公司需要实现一份合同的自动滚动预览,以及分页请求下一页数据继续滚动,直到所有合同加载完成就取消滚动。
问题:不同手机使用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{ //清除滚动定时器 } } })
标签:滚动,请求,兼容问题,++,clientHeight,ele,scrollTop,js From: https://www.cnblogs.com/lixz/p/17847144.html