[亿信BI4.7] tab页自动切换

6675
5

nannan 数据老手Lv5

发表于2020-1-11 19:40

悬赏1

已解决

楼主
这个是tab页根据按钮来回切换tab标签的一个脚本,为什么当我在报表里面加两个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;
                        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");

最近看过此主题的会员

zhouxm

2533838981

不如相忘

wxw

esen_50RKBHQRZI

esen_52KGVHIWO9

jonie

槐序

刘玉胜

陈平安

最佳答案
最后调用函数的部分,一个tab页要调用一次,不能把所有参数都放在一个函数里调用。
比如说其中一组tab页的参数是@a1,@a2;另一组tab页的参数是@b1,@b2,那么就应该:
checkBtnAndBindTab(["@a1","@a2"],"HHH1");
checkBtnAndBindTab(["@b1","@b2"],"HHH2");
另外,在设置按钮参数的时候,同组的参数在属性中要设置相同的分组名,不同组的参数设置不同的分组名。

5个回答

只看楼主

wut 数据老手Lv5

发表于2020-1-13 10:40

只看该作者

取消 关注该作者的回复

沙发

菜鸟看不懂脚本,认为你可以问问当初给你提供脚本的人 比较简单。看是不是不应用到有2个tab标签的情况

小亿 管理员

发表于2020-1-18 11:11

只看该作者

取消 关注该作者的回复

板凳

问题是否有得到解决呢?解决之后可以设置最佳答案关帖哟~

huangxf 初学数据Lv2

发表于2020-1-11 19:40

只看该作者

取消 关注该作者的回复

地板

最后调用函数的部分,一个tab页要调用一次,不能把所有参数都放在一个函数里调用。
比如说其中一组tab页的参数是@a1,@a2;另一组tab页的参数是@b1,@b2,那么就应该:
checkBtnAndBindTab(["@a1","@a2"],"HHH1");
checkBtnAndBindTab(["@b1","@b2"],"HHH2");
另外,在设置按钮参数的时候,同组的参数在属性中要设置相同的分组名,不同组的参数设置不同的分组名。

zm1997 数据达人Lv4

发表于2021-2-1 10:48

只看该作者

取消 关注该作者的回复

5#

huangxf 发表于 2020-1-11 19:40
最后调用函数的部分,一个tab页要调用一次,不能把所有参数都放在一个函数里调用。
比如说其中一组tab页的 ...

已经按你的方式改了,但是运行起来的效果是两个tab页都不能自动切换,只有在选择其中的一个时,被选中的那个tab页会开始自动切换,另一个还是保持不变

xxxl 数据领袖Lv6

发表于2021-2-1 14:35

只看该作者

取消 关注该作者的回复

6#

本帖最后由 xxxl 于 2021-2-2 11:50 编辑

zm1997 发表于 2021-2-1 10:48
已经按你的方式改了,但是运行起来的效果是两个tab页都不能自动切换,只有在选择其中的一个时,被选中的 ...

这是一个按钮绑定tab页自动轮播的脚本适用于bi不适用abi,abi考虑用这个脚本https://bbs.esensoft.com/forum.p ... mp;extra=#pid167184

登录后可回答问题,请登录注册

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流