反饋已提交

網絡繁忙

JS實現首尾相接的跑馬燈

1. 概述

1.1 版本

報表伺服器版本
功能變更
11.0-

1.2 預期效果

在進行一些集團新聞內容展示時,可能需要一種首尾相接的跑馬燈捲動效果,如下圖所示:

1.3 實現思路

儲存格中新增 html 程式碼,用 html 顯示內容,再配合 JS 實現捲動效果。

2. 普通報表範例

2.1 開啟範本

開啟%FR_HOME%\webroot\WEB-INF\reportlets\demo\form\以html實現縱向跑馬燈特效.cpt報表

2.2 新增公式

1)選中 B3 儲存格,新增公式:"<div id=\"demo\" style=\"height:300px;overflow:hidden;\"> <div id=\"indemo\" style=\"height:200%;\"> <div id=\"demo1\"> <br />" + REPLACE(D3, ",", "<br /><br />") + "<br /><br /> </div> <div id=\"demo2\"></div> </div> </div>"

注1:公式中使用 replace 函式將 D3 儲存格的內容連接到 HTML 語句中,如果資料內容不在 D3 儲存格,需要修改。

注2:公式中的 demo,demo1 ,demo2 會在後面 JavaScript 中引用,請不要改名稱。

2)隱藏 D 列。

2.3 設定 HTML 顯示內容

選中剛新增公式的 B3 儲存格,在「儲存格屬性>其他 」位置,勾選「不自動調整」,將「顯示內容」設定為「用 HTML 顯示內容」,如下圖所示:

2.4 新增 JS 事件

點選選單「範本>範本 Web 屬性>分頁預覽設定」,選擇「為該範本單獨設定」,新增「載入結束」事件,如下圖所示:

JavaScript 程式碼如下:

setTimeout(function()
speed = 50//捲動速度      
var tab = document.getElementById("demo");//外層可視模組 
var tab1 = document.getElementById("demo1");//內層捲動內容模組1
var tab2 = document.getElementById("demo2");//內層捲動內容模組2 無縫對接到1後面的內容
tab2.innerHTML = tab1.innerHTML;//仿製品demo1為demo2
tab.scrollTop = tab1.offsetHeight;
//建立一個捲動函式,當捲動至demo1與demo2交界時,demo跳到最頂端
function Marquee(){
    if (tab.scrollTop >= tab1.offsetHeight) {
        tab.scrollTop-=tab2.offsetHeight;
    }else{
        tab.scrollTop+=1;
    }
}
var MyMar=setInterval(Marquee,speed);
},1500);
//隱藏頭尾空白行
setTimeout(function(){        
document.getElementById("r-1-0").style.height=0;
},100);

2.5 預覽效果

儲存報表,點選「分頁預覽」,跑馬燈效果如下圖所示:

3. 決策報表範例

3.1 準備範本

建立決策報表,新增絕對畫布塊與報表塊,報表塊 report0 中內容設定方法同普通報表,參考普通報表範例,不再詳述,如下圖所示:

3.2 新增 JS 事件

選中報表塊 report0,新增「初始化後」事件,如下圖所示:

JavaScript 程式碼如下:

  • 跑馬燈不需要定時重新整理

setTimeout(function()
speed = 50//捲動速度      
var tab = document.getElementById("demo");//外層可視模組 
var tab1 = document.getElementById("demo1");//內層捲動內容模組1
var tab2 = document.getElementById("demo2");//內層捲動內容模組2 無縫對接到1後面的內容
tab2.innerHTML = tab1.innerHTML;//仿製品demo1為demo2
tab.scrollTop = tab1.offsetHeight;
//建立一個捲動函式,當捲動至demo1與demo2交界時,demo跳到最頂端
function Marquee(){
    if (tab.scrollTop >= tab1.offsetHeight) {
        tab.scrollTop-=tab2.offsetHeight;
    }else{
        tab.scrollTop+=1;
    }
}
var MyMar=setInterval(Marquee,speed);
},1500);
//隱藏頭尾空白行
setTimeout(function(){        
document.getElementById("r-1-0").style.height=0;
},100);
  • 跑馬燈需要定時重新整理

var form = this.options.form;
setInterval(function({
form.getWidgetByName('report0').gotoPage(1"{}"true);//重新整理報表塊,report0為報表塊的元件名稱
$(".loading-ec-indicator").eq(0).remove();//移除重新整理載入圖片
$(".text-indicator").remove();//移除正在載入文字
setTimeout(function({
speed = 50//捲動速度    
var tab = document.getElementById("demo");//外層可視模組 
var tab1 = document.getElementById("demo1");//內層捲動內容模組1
var tab2 = document.getElementById("demo2");//內層捲動內容模組2 無縫對接到1後面的內容
tab2.innerHTML = tab1.innerHTML;//仿製品demo1為demo2
tab.scrollTop = tab1.offsetHeight;
//建立一個捲動函式,當捲動至demo1與demo2交界時,demo跳到最頂端
function Marquee({
if (tab.scrollTop >= tab1.offsetHeight) {
tab.scrollTop -= tab2.offsetHeight;
else {
tab.scrollTop += 1;
}
}
var MyMar = setInterval(Marquee, speed);
}, 1000);
}, 5000);

3.3 預覽效果

儲存範本,點選「PC端預覽」,捲動不重新整理效果如下圖所示:

儲存範本,點選「PC端預覽」,捲動同時重新整理效果如下圖所示:

4. 範本下載

1)普通報表已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\分頁預覽JS實體\JS實現跑馬燈效果一.cpt

點選下載範本:JS實現跑馬燈效果一.cpt

2)決策報表已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表單JS實體\JS實現跑馬燈效果二.frm

點選下載範本:JS實現跑馬燈效果二.frm


附件列表


主題: 報表應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙