当前位置: 首页 > article >正文

table数据自动滚动

思路

看上去滚动,其实做法就是把第一行数据移到最后面
效果

主要代码

body添加一个表格

<!-- 创建一个表格 -->
<table id="testTable">
    <thead>
        <tr>
            <th>id</th>
            <th>title</th>
            <th>userId</th>
        </tr>
    </thead>
</table>

全局变量:

let data = [];	// 表格数据
let intervals = {};	// 存放多个定时器

获取测试数据:

 // 获取表格数据
 function getTableData() {
     $("#testTable").DataTable({
         ajax: {
             url:"https://jsonplaceholder.typicode.com/posts",	// 测试数据
             type: 'get',
             dataSrc: function(res){
                 console.log(res);
                 return res;
             },
         },
         columns: [
             { data: 'id' },
             { data: 'title' },
             { data: 'userId' },
         ],
         paging: false,
         searching: false,
         ordering: false,
         scrollY: '500'
     });
     setTableRoll("testTable");	// 获取数据后自动滚动
 }

因为可能会涉及多个表格,创建了公共的滚动方法:

// 设置表格自动滚动 —— divName 是元素id名称
function setTableRoll(divName) {
    intervals[divName] = setInterval(function() {
        let tbodyDom = $("#" + divName).find("tbody"), trDom = tbodyDom.find('tr:first'), trHeight = trDom.height();
        tbodyDom.animate({
            // marginTop: -trHeight+'px'
        }, 600, function() {
            // tbodyDom.css('marginTop', 0);
            trDom.css("marginTop", 0).appendTo(tbodyDom);
        })
    }, 3000)
}

我看到好多博客都有加这两个代码marginTop: -trHeight+'px'tbodyDom.css('marginTop', 0)不知道有什么用?我注释了效果会有,没注释效果也没有变化

添加移入移出表格,设置暂停和开始滚动:

$("#testTable").hover(function() {
    clearInterval(intervals['testTable'])
}, function() {
    setTableRoll("testTable")
})

完整代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./plugins/jquery-3.6.3.min.js"></script>
    <link rel="stylesheet" href="./plugins/DataTables/datatables.min.css">
    <script src="./plugins//DataTables/datatables.min.js"></script>
    <style>
        
    </style>
</head>

<body>
    <table id="testTable">
        <thead>
            <tr>
                <th>id</th>
                <th>title</th>
                <th>userId</th>
            </tr>
        </thead>
    </table>
    <script>
        let data = [];
        let intervals = {};
        // https://jsonplaceholder.typicode.com/comments?postId=1
        $(function() {
            getTableData();

            $("#testTable").hover(function() {
                clearInterval(intervals['testTable'])
            }, function() {
                setTableRoll("testTable")
            })
        })

        // 获取表格数据
        function getTableData() {
            $("#testTable").DataTable({
                ajax: {
                    url:"https://jsonplaceholder.typicode.com/posts",
                    type: 'get',
                    dataSrc: function(res){
                        console.log(res);
                        return res;
                    },
                },
                columns: [
                    { data: 'id' },
                    { data: 'title' },
                    { data: 'userId' },
                ],
                paging: false,
                searching: false,
                ordering: false,
                scrollY: '500'
            });
            setTableRoll("testTable");
        }

        // 设置表格自动滚动
        function setTableRoll(divName) {
            console.log(divName);
            intervals[divName] = setInterval(function() {
                let tbodyDom = $("#" + divName).find("tbody"), trDom = tbodyDom.find('tr:first'), trHeight = trDom.height();
                tbodyDom.animate({
                    // marginTop: -trHeight+'px'
                }, 600, function() {
                    // tbodyDom.css('marginTop', 0);
                    trDom.css("marginTop", 0).appendTo(tbodyDom);
                })
            }, 3000)
        }
    </script>
</body>

</html>

http://www.kler.cn/a/9201.html

相关文章:

  • C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
  • Pycharm PyQt5 环境搭建创建第一个Hello程序
  • 网络远程操控
  • AI 扩展开发者思维方式:以 SQL 查询优化为例
  • 黄色校正电容102j100
  • 开源 2 + 1 链动模式、AI 智能名片、S2B2C 商城小程序在用户留存与品牌发展中的应用研究
  • Redis 实现限流
  • 异构计算给我们带来了哪些思考?
  • MySQL学习笔记(十八)—— 事务基本知识
  • Golang中基于HTTP协议的网络服务
  • 盐城北大青鸟:人生苦短,我学Java
  • 【剑指offer|1.数组中重复的数字】
  • SpringBoot集成Dubbo启用gRPC协议
  • chatGPA的主要功能-chatGPT深度分析
  • 【数据结构】二叉搜索树BST的实现(递归)
  • 使用sealos工具部署k8s
  • ToBeWritten之固件威胁建模
  • 代码随想录打卡第51天|309.最佳买卖股票时机含冷冻期;714.买卖股票的最佳时机含手续费
  • P1016 [NOIP1999 提高组] 旅行家的预算
  • vue:生成二维码 qrcode、vue-qr(二维码中间可带logo)
  • java:classLoader.loadClass() 和 Class.forName()
  • JavaScript -- 函数
  • Midjourney —— AI绘图工具能取代设计师吗?
  • HttpRunner3.x 源码解析(4)-工具类loader.py
  • 数据结构——二分查找算法
  • 架构重构的技巧