-
-
tyy__think 小试身手Lv3
发表于2020-11-12 14:55
悬赏1
已解决
楼主
本帖最后由 tyy__think 于 2020-11-12 15:00 编辑
请问报表设计页面能否实现列表内容自循环滚动呢?
请问报表设计页面能否实现列表内容自循环滚动呢?
最佳答案
将需要滚动的表格放在容器中然后再客户端脚本中写以下代码
复制代码
- /***
- **表格内容自动轮播脚本
- **@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;
- }
- 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;
- }
- }
- setTimeout(scrollUp, 5);//控制速度 越大越慢
- };
- var restartScroll = function () {
- scrollElem.scrollTop = 0;
- setTimeout(scrollUp, 50);
- };
- jQuery(tableDom).hover(function () {
- stopscroll = true;
- }, function () {
- stopscroll = false;
- });
- //控制开始是否延迟
- setTimeout(restartScroll, 0);
- }
- /*
- *复制表格每行内容
- */
- function copyTableRows(tableDom) {
- var tBody = tableDom.firstElementChild.children[1];
- var rowList = tBody.children;
- var rowLength = rowList.length;
- for(var i=0 ; i<rowLength ; i++){
- var trow = rowList[i];
- var newTR = tBody.insertRow(rowLength+i);
- newTR.style.height = trow.style.height;
- copyRowCells(trow , newTR);
- }
- }
- /*
- *复制每行的列内容
- */
- function copyRowCells(trow , newTR) {
- var cellList = trow.children;
- var cellLength = cellList.length;
- var cellHtml = "";
- for(var i=0 ; i<cellLength ; i++){
- var cell = cellList[i];
- cellHtml += cell.outerHTML;
- }
- newTR.innerHTML = cellHtml;
- }
- //复制表格行内容
- copyTableRows(document.getElementById('GRID1'));//GRID1为表格代号
- autoScrollTable(document.getElementById('GRID1'),document.getElementById("HHH2").clientHeight);//HHH2为表格所在容器代号
8个回答
将需要滚动的表格放在容器中然后再客户端脚本中写以下代码
- /***
- **表格内容自动轮播脚本
- **@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;
- }
- 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;
- }
- }
- setTimeout(scrollUp, 5);//控制速度 越大越慢
- };
- var restartScroll = function () {
- scrollElem.scrollTop = 0;
- setTimeout(scrollUp, 50);
- };
- jQuery(tableDom).hover(function () {
- stopscroll = true;
- }, function () {
- stopscroll = false;
- });
- //控制开始是否延迟
- setTimeout(restartScroll, 0);
- }
- /*
- *复制表格每行内容
- */
- function copyTableRows(tableDom) {
- var tBody = tableDom.firstElementChild.children[1];
- var rowList = tBody.children;
- var rowLength = rowList.length;
- for(var i=0 ; i<rowLength ; i++){
- var trow = rowList[i];
- var newTR = tBody.insertRow(rowLength+i);
- newTR.style.height = trow.style.height;
- copyRowCells(trow , newTR);
- }
- }
- /*
- *复制每行的列内容
- */
- function copyRowCells(trow , newTR) {
- var cellList = trow.children;
- var cellLength = cellList.length;
- var cellHtml = "";
- for(var i=0 ; i<cellLength ; i++){
- var cell = cellList[i];
- cellHtml += cell.outerHTML;
- }
- newTR.innerHTML = cellHtml;
- }
- //复制表格行内容
- copyTableRows(document.getElementById('GRID1'));//GRID1为表格代号
- autoScrollTable(document.getElementById('GRID1'),document.getElementById("HHH2").clientHeight);//HHH2为表格所在容器代号
嗯嗯 不客气
-
tyy__think 小试身手Lv3
5#
xxxl 发表于 2020-11-12 14:55
将需要滚动的表格放在容器中然后再客户端脚本中写以下代码
打扰啦,这个表格的滚动有效果了,但是滚动有一点问题呢,这个脚本语言包含表头吗?而且一直滚动不完呢,卡在3这里就一直在跳,我看脚本也看不出到底要改哪里
tyy__think 发表于 2020-11-13 10:33
打扰啦,这个表格的滚动有效果了,但是滚动有一点问题呢,这个脚本语言包含表头吗?而且一直滚动不完呢, ...
您是要固定表头不滚动吗,重新在一个帖子吧 我再给您找下改成不滚动表头的脚本


