[ABI 5.1] 表格轮播鼠标悬浮后如何进行滚动轴的滚动

12324
1

张腾 数据老手Lv5

发表于2021-1-29 11:01

悬赏1000

已解决

楼主
  • 这个脚本是ABi报表悬浮滚动的内容,显示没有问题,但是因为我的滚动表有几百行,这样鼠标悬浮后,对应的内容就是需要滚动轴进行滚动,这个在哪里添加?
    现在表格鼠标悬浮后表格直接停止了,但是不可以进行滚动轴的滚动
  • /***
  • **表格内容自动轮播脚本
  • **@param tableDom内容滚动的表格,最好是表格的父DIV
  • **@param visibleHeight 可视区的高度
  • ***/
  • function autoScrollTable(tableDom, visibleHeight) {
  •     var marqueesHeight = visibleHeight;
  •     var stopscroll = false;
  •     var scrollElem = tableDom;
  •         var freshScrollHeight = tableDom.firstElementChild.offsetHeight/4;
  •     var preTop = 0;
  •     var currentTop = 0;
  •     var stoptime = 0;
  •     with (scrollElem) {
  •         style.height = parseFloat(marqueesHeight) + "px";
  •         style.overflow = 'hidden';
  •         noWrap = true;
  •     }
  •     var scrollUp = function () {
  •         if (stopscroll) {
  •             setTimeout(scrollUp, 50);
  •             return;
  •         }
  •         scrollElem.lastt = scrollElem.scrollTop;
  •         currentTop += 1;
  •         if (currentTop == (marqueesHeight + 1)) {
  •             stoptime += 1;
  •             currentTop -= 1;
  •             if (stoptime == 1) {
  •                 currentTop = 0;
  •                 stoptime = 0;
  •             }
  •         } else {
  •             preTop = scrollElem.scrollTop;
  •             scrollElem.scrollTop += 1;
  •             if (preTop == scrollElem.scrollTop) {
  •                                 //console.log("preTop =" + preTop);
  •                // scrollElem.scrollTop = freshScrollHeight + 2;
  •               //  scrollElem.scrollTop += 1;
  •        scrollElem.scrollTop =0;
  •             }
  •         }
  •         setTimeout(scrollUp, 50);
  •     };
  •     var restartScroll = function () {
  •         scrollElem.scrollTop = 0;
  •         setTimeout(scrollUp, 50);
  •     };
  •     jQuery(tableDom).hover(function () {
  •         stopscroll = true;
  •     }, function () {
  •         stopscroll = false;
  •     });
  •    setTimeout(restartScroll, 2000);
  • }
  • /*
  • *复制表格每行内容
  • */
  • function copyTableRows(tableDom) {
  •     var tBody = tableDom.firstElementChild.children[1];
  •    //额外的增加一个标题行
  •    //生成一个标题行放在tableDom平级上
  •     titleTable(tableDom);
  •    //复制多余的行
  •     var rowList = tBody.children;
  •     var rowLength = rowList.length;
  •     for(var i=0 ; i<rowLength ; i++){
  •         var trow = rowList;
  •         var newTR = tBody.insertRow(rowLength+i);
  •                 newTR.style.height = trow.style.height;
  •                 copyRowCells(trow , newTR);
  •     }
  • }
  • function titleTable(tableDom){
  •    var div = document.createElement("div");
  •    div.style.cssText=tableDom.style.cssText;
  •    div.style.overflow = 'hidden';
  •    var temptable = tableDom.firstElementChild.cloneNode(true);
  •    var tBody = temptable.children[1];
  •     var rowList = tBody.children;
  •     var rowLength = rowList.length;
  •     for(var i=rowLength-1 ; i>1; i--){
  •         var trow = rowList;
  •         tBody.removeChild(trow);
  •     }
  •     temptable.style.cssText+=";position:absolute;top:0px;";
  •     temptable.id=tableDom.id;
  •      div.appendChild(temptable);
  •     tableDom.parentElement.appendChild(div);
  •     tableDom.parentElement.style.overflow="hidden";
  •    var spans = $(tBody.children[1]).find("span");
  •      tBody.children[1].style.height="0px";
  •    for(var i = 0,cnt = spans.length;i<cnt;i++){
  •                  spans.innerText="";
  •    }
  •     //获取标题行的高度
  •     var h = tBody.rows[0].offsetHeight;
  •     titleheight = h;
  •     tableDom.style.cssText+=";top:"+h+"px;position:relative;";
  •     //删除标题行
  •     var tsrcBody = tableDom.children[0].children[1];
  •     var rowListsrc= tsrcBody.children;
  •     tsrcBody .removeChild(rowListsrc[0]);
  •    //重新调整div高度
  •    div.style.height=titleheight+1+"px"; //1为边框的高度
  • }
  • /*
  • *复制每行的列内容
  • */
  • function copyRowCells(trow , newTR) {
  •     var cellList = trow.children;
  •     var cellLength = cellList.length;
  •     var cellHtml = "";
  •     for(var i=0 ; i<cellLength ; i++){
  •     var cell = cellList;
  •         cellHtml += cell.outerHTML;
  •     }
  •     newTR.innerHTML = cellHtml;
  • }
  • //复制表格行内容
  • var griddom = document.getElementById('GRID1');
  • var titleheight;
  • //由于客户端脚本是复制的表格,所以选中效果应该是不正确的,表格组件已经生成了,绑定也生成了,故这里只能去掉选中效果
  • g_rptpage.getGridById("GRID1").setEnabled(false);
  • var srccontainerheight = document.getElementById("HHH2").clientHeight;
  • var girdheight =griddom.clientHeight;
  • if(girdheight>srccontainerheight){
  •       copyTableRows(griddom);
  •      autoScrollTable(griddom,document.getElementById("HHH2").clientHeight-titleheight);
  • }

最近看过此主题的会员

esen_5KY3YE02TB

esen_4TU4L1BV1N

5720

chenyul

最佳答案

xxxl

发表于2021-1-29 11:01

只看该作者

取消 关注该作者的回复

目前没找到您这样的需求脚本,需要您自己写或者是走脚本定制安排研发来写
1个回答

只看楼主

xxxl 数据领袖Lv6

发表于2021-1-29 11:01

只看该作者

取消 关注该作者的回复

沙发

目前没找到您这样的需求脚本,需要您自己写或者是走脚本定制安排研发来写

登录后可回答问题,请登录注册

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流