-
-
张腾 数据老手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);
- }