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

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

时间:2023-11-21 17:47:53浏览次数:29  
标签:滚动 请求 兼容问题 ++ clientHeight ele scrollTop js

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

 

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

问题:不同手机使用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

相关文章

  • VC++ 2019 MFC TinyXML2使用教程/方法详解(转载)
    转载地址:VC++2019MFCTinyXML2使用教程/方法详解_vc++2019_一笑的博客-CSDN博客TinyXML2让VC++中操作XML,如鱼得水,就像一个小型的数据库,特别方便。本篇主要介绍在VC++2019的MFC项目中,如何利用TinyXML2,创建、插入、查询、更新、删除节点或数据。也顺便介绍下UNICODE转UTF......
  • c++文件的操作
    文件操作:c++对文件的操作需要包含头文件<fstream>文件的类型,主要分为文本文件(ASCII形式存在电脑) 和二进制文件。文件操作方式:1.写文件(ofstream)2.读文件(ifstream)3.读写文件(fstream) 写文件步骤:1.包含头文件》2.创建流对象》3.打开文件》4.写数据》5.关闭流#inc......
  • 如何优雅的使用微信小程序的wx.request请求(封装request.js工具类)
    首先官方的文档不是支持Promise风格的请求我们通过官方文档可以看到微信小程序发请求的一些具体参数,下面的代码展示了用wx.request()发送的一个标准请求:wx.request({     url:"https://xxx.com",     method:"POST",     data:{   ......
  • c++总结
    const在不同位置时的不同意义指针类型前:声明一个指向常量的指针,程序中不能通过指针来改变它所指向的值,但指针本身的值可以改变,即指针可以指向其他数据;"*"号和指针名之间,声明一个指针常量(常指针),指针本身的值不可改变,即不能指向其他数据,但指向的数据的值可以改变两个地方都加,声明......
  • js常见操作,获取随机数、定时器
    一、js获取随机数的方法1、Math.random()方法,该方法返回一个大于等于0且小于1的伪随机浮点数。如果需要获取特定范围内的随机数,可以使用数字运算来调整结果。//获取0到1之间的随机数varrandomNum=Math.random();//获取0到10之间的随机整数varrandomInt=Math.floor(Math.ra......
  • nodejs学习04——express框架
    搭建环境新建一个文件夹LearnExpress,命令行://初始化包npminit//安装expressnpmiexpress初体验//1.导入expressconstexpress=require('express');//2.创建应用对象constapp=express();//3.创建路由规则app.get('/home',(req,res)=>{ //res.end('......
  • 【Python】geopandas 读取 shp/geojson 边界文件
    1.读取shp/geojson边界文件importgeopandasasgpdfile='media/abc.geojson'gdf=gpd.read_file(file)#将GeoDataFrame转换为GeoJSON字符串geojson=json.loads(gdf.to_json())features=geojson['features']2.获取边界文件的网格范围importgeopandas......
  • nodejs升级引起的构建错误
      参考实际使用升级webpacknpminstall-Dwebpack@latest升级vue-clinpminstall-g@vue/cli创建vue-clidemo重新配置vue.configwebpack>5报错问题 1、运行下面这行指令,安装在Webpack中PolyfillNode.js核心模块。npminstallnode-polyfill-webpack......
  • Flask之request.json()和 request.form.get()
    在Flask中,request.json和request.form.get()用于从HTTP请求中获取数据,但它们主要用于不同类型的数据传递方式。request.json:用于从包含JSON数据的请求体中提取数据。适用于POST请求中包含JSON数据的情况,通常是通过AJAX请求或使用Content-Type:application/json标头发......
  • 医院影像归档和通信系统源码(C++pacs系统源码)
    PACS系统,意为影像归档和通信系统。它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机,各种红外仪、显微仪等设备产生的图像)通过各种接口(模拟,DICOM,网络)以数字化的方式海量保存起来,当需要的时候在一定的授权下能够很快的调回使用,同时增加一......