[ABI 5.2] tab页

11289
4

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页都不能自动切换了,是什么原因呢?
                                



最佳答案
本帖最后由 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轮换可将脚本封装起来像这样
  1. function Tab(btns) {
  2. var intervalTime = 300;//tab标签轮换时间间隔
  3. var xtabCtrl = g_rptpage.getWidgetByName(btns);
  4. var bodyContainer = xtabCtrl.getBodyContainer();
  5. var container = xtabCtrl.getContainer();
  6. var tabCount = xtabCtrl.getCount();
  7. var i = 0;
  8. var timer = setInterval(function(){    //开启定时器
  9.   if(i<tabCount-1){
  10.     xtabCtrl.setActive(i);
  11.     i++;
  12.   }else {
  13.     xtabCtrl.setActive(i);
  14.     i = 0;
  15.   }
  16. },intervalTime);
  17. container.onmouseover=function(){
  18.   clearInterval(timer);//关闭定时器
  19. }
  20. container.onmouseout=function(){
  21.   i = xtabCtrl.getActiveIndex();
  22.   timer = setInterval(function(){    //开启定时器
  23.     if(i<tabCount-1){
  24.       xtabCtrl.setActive(i);
  25.       i++;
  26.     }else {
  27.       xtabCtrl.setActive(i);
  28.       i = 0;
  29.     }
  30.   },intervalTime);
  31. }}
  32. Tab("HHH2");  Tab("HHH5");
复制代码



4个回答

只看楼主

xxxl 数据领袖Lv6

发表于2021-2-1 14:24

只看该作者

取消 关注该作者的回复

沙发

这个脚本本来就不是自动切换的脚本 是让按钮和tab页绑定的脚本

zm1997 数据达人Lv4

发表于2021-2-1 14:26

只看该作者

取消 关注该作者的回复

板凳

xxxl 发表于 2021-2-1 14:24
这个脚本本来就不是自动切换的脚本 是让按钮和tab页绑定的脚本

请问适用不同的2组tab和按钮吗?

xxxl 数据领袖Lv6

发表于2021-2-1 14:32

只看该作者

取消 关注该作者的回复

地板

zm1997 发表于 2021-2-1 14:26
请问适用不同的2组tab和按钮吗?

这个可以使用两组不同的tab按钮试试我这个例子 解压后这里装入 脚本例子.rar (2.69 KB, 下载次数: )

这里有一个更简单的方法也可以试试https://bbs.esensoft.com/thread-137445-1-1.html

xxxl 数据领袖Lv6

发表于2021-2-1 13:59

只看该作者

取消 关注该作者的回复

5#

本帖最后由 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轮换可将脚本封装起来像这样
  1. function Tab(btns) {
  2. var intervalTime = 300;//tab标签轮换时间间隔
  3. var xtabCtrl = g_rptpage.getWidgetByName(btns);
  4. var bodyContainer = xtabCtrl.getBodyContainer();
  5. var container = xtabCtrl.getContainer();
  6. var tabCount = xtabCtrl.getCount();
  7. var i = 0;
  8. var timer = setInterval(function(){    //开启定时器
  9.   if(i<tabCount-1){
  10.     xtabCtrl.setActive(i);
  11.     i++;
  12.   }else {
  13.     xtabCtrl.setActive(i);
  14.     i = 0;
  15.   }
  16. },intervalTime);
  17. container.onmouseover=function(){
  18.   clearInterval(timer);//关闭定时器
  19. }
  20. container.onmouseout=function(){
  21.   i = xtabCtrl.getActiveIndex();
  22.   timer = setInterval(function(){    //开启定时器
  23.     if(i<tabCount-1){
  24.       xtabCtrl.setActive(i);
  25.       i++;
  26.     }else {
  27.       xtabCtrl.setActive(i);
  28.       i = 0;
  29.     }
  30.   },intervalTime);
  31. }}
  32. Tab("HHH2");  Tab("HHH5");
复制代码



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

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

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

400咨询:400-0011-866

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

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号