-
-
tyy__think 小试身手Lv3
发表于2020-11-13 11:03
悬赏10
已解决

- /***
- **表格内容自动轮播脚本
- **@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[i];
- 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[i];
- 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[i].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[i];
- 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);
- }


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;
- }
- 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[i];
- 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[i];
- 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[i].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[i];
- 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);
- }


-
tyy__think 小试身手Lv3
xxxl 发表于 2020-11-13 11:12
嗯嗯 不客气
请问这个脚本设置了按照高度滚动吗,不知道是不是因为数据比较少的问题,没有滚动效果呢,请问在哪里控制展示高度的呢
tyy__think 发表于 2020-11-13 11:24
请问这个脚本设置了按照高度滚动吗,不知道是不是因为数据比较少的问题,没有滚动效果呢,请问在哪里控制 ...
将表格外的容器调小一点就行了吧
-
tyy__think 小试身手Lv3
xxxl 发表于 2020-11-13 11:29
将表格外的容器调小一点就行了吧
我想了一下,要是数据是浮动的,那样式改变了,你知道在脚本语言里面直接调整样式该怎么做吗?就是这种斑纹,我看也没法直接写表格的css代码

本帖最后由 xxxl 于 2020-11-13 11:54 编辑
tyy__think 发表于 2020-11-13 11:44
我想了一下,要是数据是浮动的,那样式改变了,你知道在脚本语言里面直接调整样式该怎么做吗?就是这种斑 ...
哦哦 我知道了 您这里是固定表元对吧,然后滚动的效果不行要改成浮动表但是还需要表格背景颜色根据奇偶行相异。浮动块的奇偶行颜色不同可以在这里设置if(mod(self.index,2)=0,"#bb2ef1","#f0f0f0")

参考这个帖子https://bbs.esensoft.com/thread-137256-1-1.html
-
tyy__think 小试身手Lv3
xxxl 发表于 2020-11-13 11:49
哦哦 我知道了 您这里是固定表元对吧,然后滚动的效果不行要改成浮动表但是还需要表格背景颜色根据奇偶行 ...
好的 非常感谢 已经解决了