-
-
zm1997 数据达人Lv4
发表于2021-1-30 11:28
悬赏1
已解决
楼主
- /***
- *按钮必须使用同一个分组名
- **/
- 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;
- g_rptpage.widgets[tabctrlId].setActive(idx);
- };
- var bindTabHover = function(tabCtrlId,idx){
- stopAutoCheckBtn();
- execDomEvent(btnDoms[idx],"click");
- };
- var autoCheckBtn = function(){
- var nextidx = (window["current_active_btn_idx"]+1)%btnDoms.length;
- 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++){
- addEvent(btnDoms,"click",bindTabClick.bind(btnDoms,tabctrlId,i));
- jQuery(btnDoms).hover(bindTabHover.bind(btnDoms,tabctrlId,i),startAutoCheckBtn);
- }
- startAutoCheckBtn();
- }
- }
- checkBtnAndBindTab(["@cc","@cl","@zl","@fx"],"HHH87");
这个脚本适用于两组tab页和按钮的组合吗?
最佳答案
本帖最后由 xxxl 于 2021-2-2 11:49 编辑
公司简介demo脚本适用于bi,但不适用于abi,abi上存在一定问题,建议更换脚本,比如用这个https://bbs.esensoft.com/forum.p ... mp;extra=#pid167184需要多个tab轮换可将脚本封装起来。
zm1997 发表于 2021-2-1 09:49
这份就是我现在用的脚本,可以看看是哪里出了问题。导致运行的时候两个tab页动也不会动
...
公司简介demo脚本适用于bi,但不适用于abi,abi上存在一定问题,建议更换脚本,比如用这个https://bbs.esensoft.com/forum.p ... mp;extra=#pid167184需要多个tab轮换可将脚本封装起来。
11个回答
zm1997 发表于 2021-1-30 11:49
按钮的分组名是否需要一致?
如果两组按钮分别控制自己的tab,只要各组的分组名一致就可以
zm1997 发表于 2021-1-30 11:57
是需要分别控制自己的tab,第一个分组名是1,第二个分组名是2。
那这两个要分别设置自己的分组名
本帖最后由 zm1997 于 2021-1-30 14:29 编辑
xuxp 发表于 2021-1-30 11:59
那这两个要分别设置自己的分组名
checkBtnAndBindTab(["@gfs","@gd","@zj","@fgl","@ddyc"],"HHH87");
checkBtnAndBindTab(["@tq","@xl"],"HHH488");
我的脚本里关于tab和按钮的联动的调用脚本。第一个的分组名是1,第二个的分组名是2
分别设置了,但是运行的时候是一个动的时候,另外一个不动。不能两个一起动,不知道为什么

zm1997 发表于 2021-1-30 14:24
checkBtnAndBindTab(["@gfs","@gd","@zj","@fgl","@ddyc"],"HHH87");
checkBtnAndBindTab(["@tq","@xl"]," ...
代码贴出来看看呢
xuxp 发表于 2021-1-30 14:54
代码贴出来看看呢
/***
*按钮必须使用同一个分组名
**/
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");
zm1997 发表于 2021-1-30 15:47
/***
*按钮必须使用同一个分组名
**/
前面的脚本也复制一遍,不止复制最后一句,这样试下。