zoukankan      html  css  js  c++  java
  • 表格功能

    功能项:

    1、json动态,分批次加载表格数据

    2、固定表格头部

    3、播放表格数据

    问题待解决:

    定义类,实时更新数据(定义类保存表格行)。

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/zgy.css">
        <style>
            table { width: 100%; table-layout: fixed; }
            td, th { height: 25px; line-height: 25px; border-right: 1px solid #ff4136; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }
            .tb_head { overflow-x: hidden; }
            .tb_cont { height: 200px; overflow: auto; }
            .tdw { width: 180px; }
            .xuhao { width: 30px; }
            .empty { width: 27px; }
        </style>
    </head>
    <body>
    <div class="fz">
        <div class="tb_head" id="tb_head">
            <table>
                <thead>
                <tr class="bg-grey">
                    <th class="xuhao"></th>
                    <th class="tdw">车牌号码</th>
                    <th class="tdw">定位时间</th>
                    <th class="tdw">接收时间</th>
                    <th class="tdw">精度</th>
                    <th class="tdw">速度</th>
                    <th class="tdw">方向</th>
                    <th class="tdw">里程</th>
                    <th class="tdw">状态</th>
                    <th class="tdw">附加信息</th>
                    <th class="tdw">地理位置</th>
                    <th class="empty"></th>
                </tr>
                </thead>
            </table>
        </div>
        <div class="tb_cont" id="tb_cont">
            <table id="dataTable">
                <tbody>
                </tbody>
            </table>
        </div>
        <!--<input type="button" value="更新数据" id="reBtn">-->
        <span id="msg"></span>
        <input type="button" value="播放" id="play">
        <input type="button" value="减慢" id="slowly">
        <input type="text" value="5" id="speedValue">
        <input type="button" value="加速" id="quickly">
    </div>
    </body>
    <script src="js/jquery-1.9.1.min.js"></script>
    <script>
        var contDiv = document.getElementById("tb_cont"); //2 3
        var tab = document.getElementById("dataTable");  //1 3
    //    var rowSave;
        //    3 分批加载
        var scrollHeight = contDiv.offsetHeight; //数据滚动div的高度
        var tabH = 25;  //td的高度
        var loadingNum = 10; //每次加载行数
        var totalNum = 0; //已经加载的行数
        var loadingEnd = 0; //数据加载完毕标识
        //播放
        var scrollPosition = -5 * tabH;;//滚动条位置
        var currentPlayLine=0; //当前播放位置
        var playFlag=false; //控制播放/暂停
        var m_JiShiQi=null; //计时器
        var baseSpeed = 100;//基础移动速度
        var speedLv = 5;//移动速度等级
        //        定义json,初始化数据
        var arr = {
            "ChePaiHao": '湘AE4009',
            "DingWeiShiJian": '2015-01-25 09:04:12',
            "JieShouShiJian": '2015-01-25 09:03:52',
            "JingDu": '精确',
            "Speed": '54',
            "Direction": '',
            "Mileage": '145,515.00',
            "ZhuangTai": 'ACC关/卫星定位:锁定/定位模块:正常/通信模块:正常',
            "FuJiaXinxi": '停车时间:142分钟 车辆状态:车辆-熄火',
            "WeiZhi": '广东省佛山市南海区联和路'
        }
        var jsonstr = "[{'ChePaiHao':'粤AE4009','DingWeiShiJian':'2015-01-25 09:04:12','JieShouShiJian':'2015-01-25 09:03:52','JingDu':'精确','Speed':'54','Direction':'北','Mileage':'145,515.00','ZhuangTai':'ACC关/卫星定位:锁定/定位模块:正常/通信模块:正常','FuJiaXinxi':'停车时间:142分钟 车辆状态:车辆-熄火','WeiZhi':'广东省佛山市南海区联和路'}]";
        var jsonData = eval('(' + jsonstr + ')');
        for (var i = 0; i <= 1000; i++) {
            jsonData.push(arr);
        }
        $(function () {
    //        1加载数据
            AddDT();
    //        播放
            $("#play").click(function(){
                if(!playFlag) {
                    Play();
                }else{
                    Pause();
                }
            });
    //        加/减速
            $("#quickly").click(function(){
                PlaySpeedAdd();
            });
            $("#slowly").click(function(){
                PlaySpeedMinus();
            });
    ////        更新数据
    //        $("#reBtn").click(function () {
    //            RefreshDT();
    //        });
    //        2表格固定
            contDiv.onscroll = function () {
    //            纵向滚动
                if (CheckFlag()) {
                    AddDT();
                }
    //            横向滚动
                var scrollLeft = contDiv.scrollLeft;
                $("#tb_head").scrollLeft(scrollLeft);
            }
    
        });
        //判断是否滚动到加载
        function CheckFlag() {
            var lasttabHeight = (tab.rows.length - 1) * tabH;
            var scrollTop = document.getElementById("tb_cont").scrollTop;
            if (lasttabHeight < scrollHeight + scrollTop && loadingEnd == 0) {
                return true;
            }
        }
        //    1加载数据
        function AddDT() {
            var len = parseInt(totalNum + loadingNum);
            if (len >= jsonData.length) {
                len = jsonData.length;
                loadingEnd = 1;
            }
            $("#msg").html(totalNum + "+" + loadingNum + "+" + len + "+" + jsonData.length);
            for (var j = totalNum; j < len; j++) {
                var rowsNumber = tab.rows.length;
                var row = tab.insertRow(rowsNumber);
    
                var cell = row.insertCell();
                cell.innerHTML = row.rowIndex + 1;
                cell.setAttribute("class", "xuhao");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].ChePaiHao;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].DingWeiShiJian;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].JieShouShiJian;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].JingDu;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].Speed;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].Direction;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].Mileage;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].ZhuangTai;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].FuJiaXinxi;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                cell.innerHTML = jsonData[j].WeiZhi;
                cell.setAttribute("class", "tdw");
    
                cell = row.insertCell();
                rowSave = row;
            }
            totalNum = len;
        }
        //播放数据
        function ResetMkPoint(){
            $("#tb_cont").scrollTop(scrollPosition);
            $("#dataTable tr:eq(" + currentPlayLine + ")").addClass("red").siblings().removeClass("red");
            scrollPosition += tabH;
            currentPlayLine++;
            if(currentPlayLine<jsonData.length){
                m_JiShiQi = setTimeout(function () {
                    ResetMkPoint();
                }, speedLv * baseSpeed);   //移动速度
            }
        }
    //    //    更新数据
    //    function RefreshDT() {
    //        rowSave.cells[3].firstChild.nodeValue = "变更更";
    //    }
    //    播放
        function Play(){
            ResetMkPoint();
            $("#play").val("暂停");
            playFlag=true;
        }
    //    暂停
        function Pause(){
            if (m_JiShiQi != null) {
                clearTimeout(m_JiShiQi);
            }
            $("#play").val("播放");
            playFlag=false;
        }
    //    加速
        function PlaySpeedAdd(){
            speedLv--;
            if (speedLv <= 1) {
                speedLv = 1;
            }
            $("#speedValue").val(GetCurrentSpeed(speedLv));
        }
    //    减速
        function PlaySpeedMinus(){
            speedLv++;
            if (speedLv >= 10) {
                speedLv = 10;
            }
            $("#speedValue").val(GetCurrentSpeed(speedLv));
        }
    //    速度换算
        function GetCurrentSpeed(s) {
            switch (s) {
                case 1:
                    return 10;
                case 2:
                    return 9;
                case 3:
                    return 8;
                case 4:
                    return 7;
                case 5:
                    return 6;
                case 6:
                    return 5;
                case 7:
                    return 4;
                case 8:
                    return 3;
                case 9:
                    return 2;
                case 10:
                    return 1;
                default:
                    1
            }
        }
    </script>
    </html>
    View Code

  • 相关阅读:
    golang语言中os/signal包的学习与使用
    golang语言中os/exec包的学习与使用
    go语言使用go-sciter创建桌面应用(七) view对象常用方法,文件选择,窗口弹出,请求
    go语言使用go-sciter创建桌面应用(六) Element元素操作和Event事件响应
    go语言使用go-sciter创建桌面应用(五) 加载元素资源
    go语言使用go-sciter创建桌面应用(四) 固定窗口大小
    go语言使用go-sciter创建桌面应用(三) 事件处理,函数与方法定义,go与tiscript之间相互调用
    go语言使用go-sciter创建桌面应用(二) ui元素查找,增加,删除,修改
    go语言使用go-sciter创建桌面应用(一) 简单的通过html,css写ui
    go语言net包rpc远程调用的使用
  • 原文地址:https://www.cnblogs.com/zhaojieln/p/4251932.html
Copyright © 2011-2022 走看看