欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js表格移动到指定行

程序员文章站 2022-06-07 12:53:27
...
function freshView(){
        // 当前显示有数据时
         if(GlobalDataLength>0){
             // 这里为了防止并发采用副本形式进行数据查找
             var dataList = GlobalData.concat();

             //刷新显示位置到当前时间最近的一条数据
             if(StopPushtoNow)
                 return;
             // 此方法实现的是定位到离当前utc时间最近的数据,可根据需要自行调整
             currentdate = new Date();

             nowdate=currentdate.getTime()+currentdate.getTimezoneOffset()*60000;

             if(dataList != null && dataList != undefined && dataList.length > 1) {
                 var copyGlo = dataList.concat();
                 if (copyGlo != null && copyGlo != undefined && copyGlo.length > 1) {
                     // 对数组进行排序
                     copyGlo.sort(comparedate);
                     // 获取最近的时间并指定到该行上
                     //获取table序号
                     var mytable = document.getElementById("tableList");
                     var nowRow = new Date(copyGlo[0].scheduledTime);
                     for (var i = 0; i < mytable.rows.length; i++) {
                         //console.log(mytable.rows[i].cells[4].innerHTML);
                         var date = new Date(mytable.rows[i].cells[3].innerHTML);
                         if (date.getTime() == nowRow.getTime()) {
                             // 根据行高进行滑块移动位置计算
                             var heightpx=$("#tableList tr").height();
                             $("#initDataTable").scrollTop((i - 1) * heightpx);
                             break;
                         }
                     }
                 }
             }
         }
    }

时间对比排序算法

// 计算两个时间的差值找到离当前时间最近的时间
    var comparedate = function (obj1, obj2) {
        var val1 = new Date(obj1.scheduledTime);
        var val2 = new Date(obj2.scheduledTime);
        var dc1 = Math.abs((parseInt(nowdate - val1)/1000));
        var dc2 = Math.abs((parseInt(nowdate - val2)/1000));
        if (dc1 < dc2) {
            return -1;
        } else if (dc1 > dc2) {
            return 1;
        } else {
            return 0;
        }
    }