写了如下JS var reportarray = ["REPORT0"]; var form = this.options.form; window.fobject = {}; for (i = 0; i < reportarray.length; i++) { fobject["flag" + i] = true; } for (i = 0; i < reportarray.length; i++) { $("div[widgetname='" + reportarray[i] + "']").ready(function() { var index = i; let part; var self = '$("div[widgetname="' + reportarray[i] + ']")'; var name = reportarray[i]; console.log(name) setTimeout(function() { if ($('.scrollDiv').length == 0) { if ($("div[widgetname=" + name + "]").find(".frozen-center").length == 1) { part = $("div[widgetname=" + name + "]").find(".frozen-center"); $("div[widgetname=" + name + "]").find(".frozen-north").css("overflow", "hidden"); $("div[widgetname=" + name + "]").find(".frozen-north").css("overflow-y", "hidden"); } else { part = $("div[widgetname=" + name + "]").find(".reportContent"); } } else { part = $("div[widgetname=" + name + "]").find(".scrollDiv"); } part.css("overflow", "hidden"); part.css("overflow-x", "hidden"); part.css("overflow-y", "hidden"); 条 part.mouseover(function() { //鼠标悬浮 fobject["flag" + index] = false; part.css("overflow", "auto"); //显示滚动条,用以手动 part.css("overflow-x", "auto"); part.css("overflow-y", "auto"); }); part.mouseleave(function() { //鼠标离开,继续滚动 fobject["flag" + index] = true; part.css("overflow", "hidden"); //去除滚动条 part.css("overflow-x", "hidden"); part.css("overflow-y", "hidden"); }); var old = -1; var a = 0; var b = 0; setInterval(function() { if (fobject["flag" + index]) { currentpos = part[0].scrollTop; if (currentpos == old) { part[0].scrollTop = 0; a++; } else { old = currentpos; //以25ms的速度每次滚动1.5PX part[0].scrollTop = currentpos + 1.5; a++; b++; if (a % 100 == 0) { form.getWidgetByName('REPORT0').gotoPage(1, "{}", true); } } } part.css("overflow", "hidden"); //去除滚动条 part.css("overflow-x", "hidden"); part.css("overflow-y", "hidden"); }, 25); }, 300) }) } 目前实现的效果就是,可以在限定时间内对报表块进行刷新并且滚动条不会重置会一直继续往下滚。但是如果一开始报表块没有数据的话刷新,刷新等待数据出来就没有滚动的功能了而且会一直闪屏。 请问怎么才能做到在报表块块没有数据时也在刷新出数据并且当数据超出报表块区域后会进行滚动?同时鼠标移入移出时间还要生效。 谢谢各位大佬 |
最佳回答 |
||||
0
|
|