-
-
zm1997 数据达人Lv4
发表于2021-2-1 13:59
悬赏9
已解决
楼主
/***
*按钮必须使用同一个分组名
**/
function checkBtnAndBindTab(btns, tabctrlId) {
var ready = true;
var btnDoms = [];
if(!g_rptpage.calcParam){
ready = false;
}else{
for (var i = 0, l = btns.length; i < l; i++) {
var param = g_rptpage.calcParam.getParamByName(btns);
if(!param){
ready = false;
break;
}
btnDoms.push(param.getBaseDom());
}
}
if(!ready){
var func = checkBtnAndBindTab.bind(window,btns,tabctrlId);
setTimeout(func,50);
}else{
window["current_active_btn_idx"] = 0;
var bindTabClick = function(tabctrlId,idx){
window["current_active_btn_idx"] = idx;
$(btnDoms[idx].firstChild).click();
g_rptpage.widgets[tabctrlId].setActive(idx);
};
var bindTabHover = function(tabCtrlId,idx){
stopAutoCheckBtn();
$(btnDoms[idx].firstChild).click();
EUI.execDomEvent(btnDoms[idx],"click");
};
var autoCheckBtn = function(){
var nextidx = (window["current_active_btn_idx"]+1)%btnDoms.length;
$(btnDoms[nextidx].firstChild).click();
EUI.execDomEvent(btnDoms[nextidx],"click");
window["_auto_check_btn_timer"]= setTimeout(autoCheckBtn,2000);
};
var stopAutoCheckBtn = function(){
if(window["_auto_check_btn_timer"]){
clearTimeout(window["_auto_check_btn_timer"]);
window["_auto_check_btn_timer"] = null;
}
};
var startAutoCheckBtn = function(){
window["_auto_check_btn_timer"]= setTimeout(autoCheckBtn,2000);
};
for(var i=0,l=btnDoms.length;i<l;i++){
EUI.addEvent(btnDoms,"click",bindTabClick.bind(btnDoms,tabctrlId,i));
jQuery(btnDoms).hover(bindTabHover.bind(btnDoms,tabctrlId,i),startAutoCheckBtn);
}
startAutoCheckBtn();
}
}
checkBtnAndBindTab(["@gfs","@gd","@zj","@fgl","@ddyc"],"HHH87");
checkBtnAndBindTab(["@tq","@xl"],"HHH488");
使用如上所示的脚本,但在运行后,两个tab页都不能自动切换了,是什么原因呢?
*按钮必须使用同一个分组名
**/
function checkBtnAndBindTab(btns, tabctrlId) {
var ready = true;
var btnDoms = [];
if(!g_rptpage.calcParam){
ready = false;
}else{
for (var i = 0, l = btns.length; i < l; i++) {
var param = g_rptpage.calcParam.getParamByName(btns);
if(!param){
ready = false;
break;
}
btnDoms.push(param.getBaseDom());
}
}
if(!ready){
var func = checkBtnAndBindTab.bind(window,btns,tabctrlId);
setTimeout(func,50);
}else{
window["current_active_btn_idx"] = 0;
var bindTabClick = function(tabctrlId,idx){
window["current_active_btn_idx"] = idx;
$(btnDoms[idx].firstChild).click();
g_rptpage.widgets[tabctrlId].setActive(idx);
};
var bindTabHover = function(tabCtrlId,idx){
stopAutoCheckBtn();
$(btnDoms[idx].firstChild).click();
EUI.execDomEvent(btnDoms[idx],"click");
};
var autoCheckBtn = function(){
var nextidx = (window["current_active_btn_idx"]+1)%btnDoms.length;
$(btnDoms[nextidx].firstChild).click();
EUI.execDomEvent(btnDoms[nextidx],"click");
window["_auto_check_btn_timer"]= setTimeout(autoCheckBtn,2000);
};
var stopAutoCheckBtn = function(){
if(window["_auto_check_btn_timer"]){
clearTimeout(window["_auto_check_btn_timer"]);
window["_auto_check_btn_timer"] = null;
}
};
var startAutoCheckBtn = function(){
window["_auto_check_btn_timer"]= setTimeout(autoCheckBtn,2000);
};
for(var i=0,l=btnDoms.length;i<l;i++){
EUI.addEvent(btnDoms,"click",bindTabClick.bind(btnDoms,tabctrlId,i));
jQuery(btnDoms).hover(bindTabHover.bind(btnDoms,tabctrlId,i),startAutoCheckBtn);
}
startAutoCheckBtn();
}
}
checkBtnAndBindTab(["@gfs","@gd","@zj","@fgl","@ddyc"],"HHH87");
checkBtnAndBindTab(["@tq","@xl"],"HHH488");
使用如上所示的脚本,但在运行后,两个tab页都不能自动切换了,是什么原因呢?
最佳答案
本帖最后由 xxxl 于 2021-2-2 11:46 编辑
公司简介demo脚本适用于bi,但不适用于abi,abi上存在一定问题,建议更换脚本,比如用这个https://bbs.esensoft.com/forum.p ... mp;extra=#pid167184需要多个tab轮换可将脚本封装起来像这样复制代码
xxxl 发表于 2021-2-1 14:32
这个可以使用两组不同的tab按钮试试我这个例子 解压后这里装入
这里有一个更简单的方法也可以试试https: ...
公司简介demo脚本适用于bi,但不适用于abi,abi上存在一定问题,建议更换脚本,比如用这个https://bbs.esensoft.com/forum.p ... mp;extra=#pid167184需要多个tab轮换可将脚本封装起来像这样
- function Tab(btns) {
- var intervalTime = 300;//tab标签轮换时间间隔
- var xtabCtrl = g_rptpage.getWidgetByName(btns);
- var bodyContainer = xtabCtrl.getBodyContainer();
- var container = xtabCtrl.getContainer();
- var tabCount = xtabCtrl.getCount();
- var i = 0;
- var timer = setInterval(function(){ //开启定时器
- if(i<tabCount-1){
- xtabCtrl.setActive(i);
- i++;
- }else {
- xtabCtrl.setActive(i);
- i = 0;
- }
- },intervalTime);
- container.onmouseover=function(){
- clearInterval(timer);//关闭定时器
- }
- container.onmouseout=function(){
- i = xtabCtrl.getActiveIndex();
- timer = setInterval(function(){ //开启定时器
- if(i<tabCount-1){
- xtabCtrl.setActive(i);
- i++;
- }else {
- xtabCtrl.setActive(i);
- i = 0;
- }
- },intervalTime);
- }}
- Tab("HHH2"); Tab("HHH5");
4个回答
zm1997 发表于 2021-2-1 14:26
请问适用不同的2组tab和按钮吗?
这个可以使用两组不同的tab按钮试试我这个例子 解压后这里装入


这里有一个更简单的方法也可以试试https://bbs.esensoft.com/thread-137445-1-1.html
本帖最后由 xxxl 于 2021-2-2 11:46 编辑
xxxl 发表于 2021-2-1 14:32
这个可以使用两组不同的tab按钮试试我这个例子 解压后这里装入
这里有一个更简单的方法也可以试试https: ...
公司简介demo脚本适用于bi,但不适用于abi,abi上存在一定问题,建议更换脚本,比如用这个https://bbs.esensoft.com/forum.p ... mp;extra=#pid167184需要多个tab轮换可将脚本封装起来像这样
- function Tab(btns) {
- var intervalTime = 300;//tab标签轮换时间间隔
- var xtabCtrl = g_rptpage.getWidgetByName(btns);
- var bodyContainer = xtabCtrl.getBodyContainer();
- var container = xtabCtrl.getContainer();
- var tabCount = xtabCtrl.getCount();
- var i = 0;
- var timer = setInterval(function(){ //开启定时器
- if(i<tabCount-1){
- xtabCtrl.setActive(i);
- i++;
- }else {
- xtabCtrl.setActive(i);
- i = 0;
- }
- },intervalTime);
- container.onmouseover=function(){
- clearInterval(timer);//关闭定时器
- }
- container.onmouseout=function(){
- i = xtabCtrl.getActiveIndex();
- timer = setInterval(function(){ //开启定时器
- if(i<tabCount-1){
- xtabCtrl.setActive(i);
- i++;
- }else {
- xtabCtrl.setActive(i);
- i = 0;
- }
- },intervalTime);
- }}
- Tab("HHH2"); Tab("HHH5");