请问Tab块js隐藏后显示问题

心得:js有Bug,隐藏Tab块的功能也有Bug

1.可能会遇到IE正常但Windows Edge(Chrome)错乱,位置在Tab3却显示Tab0的内容

甚至是位置在Tab3但同时重叠显示Tab0+Tab3的内容

2.先隐藏再显示会错乱,只能隐藏

3.使用 if else if 超过5个后判断会无效(Bug吧?)要改用5次if而不要用else if

--

请问,我用js把所有Tab块先隐藏了,然后再利用数据库判断来显示Tab块

但遇到了一个问题就是,显示的Tab块跟内容不一致

例如他默认是在Tab3的位置(原因不明),但内容却是Tab0+Tab3的 

请问这个要如何解决呢?谢谢解答

Tab.frm

js我放在tabpane0的事件上 

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab0", false);

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab1", false);

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab2", false);

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab3", false);

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab4", false);

var str1=tab.toString(); var str2=str1.split(","); for(i=0;i<str2.length;i++) {

if (str2[i]=='Tab0') {

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab0", true); }

else if (str2[i]=='Tab1') {

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab1", true); }

else if (str2[i]=='Tab2') {

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab2", true); }

else if (str2[i]=='Tab3') {

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab3", true); }

else if (str2[i]=='Tab4') {

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab4", true); } 

 }

FineReport SK 发布于 2021-8-16 14:33 (编辑于 2021-8-18 14:51)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
LSQ000Lv5中级互助
发布于2021-8-16 14:52(编辑于 2021-8-16 14:54)

先不隐藏,直接判断哪些要显示哪些要隐藏,然后再设置显示隐藏

var str1=tab.toString(); 

var str2=str1.split(","); var flag0 = false;var flag1 = false;

var flag2 = false;var flag3 = false;var flag4 = false;for(i=0;i<str2.length;i++) { 

 if (str2[i]=='Tab0'){ 

     flag0 = true;

 }else if (str2[i]=='Tab1'){ 

     flag1 = true; 

 }else if (str2[i]=='Tab2'){ 

     flag2 = true; 

 }else if (str2[i]=='Tab3'){ 

     flag3 = true; 

 }else if (str2[i]=='Tab4'){ 

     flag4 = true; } }

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab0", flag0); this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab1", flag1); this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab2", flag2); this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab3", flag3); 

this.options.form.getWidgetByName("tabpane0").setTabVisible("Tab4", flag4);

  • SK SK(提问者) 测试后能正常显示正确的Tab块了,非常感谢
    2021-08-16 15:31 
  • SK SK(提问者) 请问有办法Tab0优先显示吗?目前貌似默认显示Tab4,可以先显示Tab0吗?谢谢解答
    2021-08-16 18:00 
  • LSQ000 LSQ000 回复 SK(提问者) 你把this.options.form.getWidgetByName(\"tabpane0\").setTabVisible(\"Tab0\", flag0);换个位置,写到最后久可以
    2021-08-17 10:31 
  • SK SK(提问者) 回复 LSQ000 不行,位置在Tab0但显示的是Tab4内容,就变成我一开始问的问题那样了
    2021-08-17 10:43 
  • SK SK(提问者) 回复 LSQ000 后来发现,WindowsEdge仍然错误,只有用IE在服务器上才正常,这个隐藏Tab块的功能看來不能用了
    2021-08-17 16:44 
最佳回答
0
may2meLv6初级互助
发布于2021-8-16 14:50

tab的数组有四个值,遍历四次每次都会切换显示tab块,最后一次的值为'Tab3',所以跳转到Tab3的位置

  • 3关注人数
  • 699浏览人数
  • 最后回答于:2021-8-18 14:51
    请选择关闭问题的原因
    确定 取消
    返回顶部