使用TabPanel时,如果两个页面存在相同的id。

问题描述

我左边是一颗tree,右边是TabPanel。当点击一个结点 A,autoload一个页面 A.jsp 在TabPanel中。再点击另一个结点 B,autoload另一个页面 B.jsp 在TabPanel中。这时就存在问题了,如果我 A 页面和 B 页面同时存在 <div id="tree"></div>,那么,如果我先点击结点 A,页面 A.jsp 正常显示,再结点 B,页面 B.jsp 不能显示,反之相反。如果将 B 页面的 <div id="tree"></div>,改为<div id="tree1"></div>,就能是正常的。我知道 id 是唯一的,不能相同。但 A.jsp 和 B.jsp 是TabPanel 中两个不同的页面,为什么是存在这个问题?希望大家帮忙!!谢了! 问题补充:那样会不会还存在一个问题:如果A.jsp里有一个组件的id号与B.jsp里的另一个组件的id号是一致的,也会出现类似的问题。所以我想问下,有没有可以解决的办法?谢谢!

解决方案

如果采用A.jsp中这种定义一个<div id>---这个地方的id是必须要写的,但是一定要唯一,不然显示会有冲突,而且A.jsp不能在浏览器重同时被载入两次,这里说的意思是在下一次载入A.jsp之前先前的A.jsp所在的页面必须先remove掉。不知道你是否明白,还是那句话就是为了避免dom节点id冲突。Ext组件的id不设定的话是ext渲染的时候自动生成的,一般都是什么 ext-com-1321之类的字符串,不用去管这些。你要这个Ext组件,有两种方式:1、该组件已经设定了Id时,使用Ext.getCmp(组件id)---(不建议使用)2、没有设定id时, 将这个组件的引用传递给你需要使用的他的对象中去。如 var panel1 = new Ext.Panel();你可以将这个panel传递给你要用它的对象,如 var panel2 = new Ext.MyPanel({panel1 : panel1});MyPanel定义如下,是一个继承Ext.Panel的一个自定义panel组件。我们组开发写ext代码的一个规范格式,送给你参考一下。MyPanel = function(config){Ext.apply(this,config);//将config中的属性赋值给MyPanel你现在就可以在这个panel中通过 this.panel1 来操作panel1了;MyPanel.supperclass.constructor.call(this,{*一些配置与定义*});}Ext.extend(MyPanel,Ext.Panel,,{*一些配置与定义*});
解决方案二:
不知道你说的组件的id是不是ext组件中设定的id,若是,则渲染的时候,后来者将顶替前面组件的实现,会造成显示不正常,归根结底还是dom节点的id冲突。解决办法是,A.jsp,B.jsp中的div 节点id不要定义的一样,然后Ext组件尽量不要使用id属性,id由ext渲染的时候自动生成,除非你在其他地方需要使用Ext.getCmp(组件Id)来获取该组件,这时可以使用id,但个个组件的id要设定为不同的值,这是要严格控制的。最好的方式就是不要设定组件的id,由ext随机取生成id。
解决方案三:
你是用tabpanel autoload一个jsp页面,这种方式的底层效果应该是这样的,首先在tabpanel的body节点下先附加上你jsp页面中写的那个节点,再把jsp写的ext组件渲染到那个节点上。如你上面的例子:生成的节点应该为:<x-tabPanel> <x-panel-head></x-panel-head> <x-panel-body> <div id="tree"> jsp中写的ext组件在这一层开始生成dom节点 </div> </x-panel-body></x-tabPanel>大致就是这么一个意思。所以当点A后生成了A页面,也就是id为tree的dom节点已经生成,再点B的时候又要去生成一个id为tree的dom节点这是就有问题了。同时给你一个解决方案,jsp_A 定义 <div id="tree_A"></div>,jsp_B 定义 <div id="tree_B"></div>,点击 A节点, var panelA = new Ext.Panel({ xx属性:xx值, autoload : { url : A.jsp, script:true//加载该页面后执行该页面中的js代码。 }})tabPanel.add(panelA );panelA .doLayout();同理点击B节点时也是这么做。同时你应该注意一下tabPanel和Panel的用法,从这个问题中感觉到你对tabPanel的使用好像理解的不是很正确,tabPanel是一个可以添加多标签页的容器。希望能对你有所帮助。

时间: 2024-11-10 01:00:46

使用TabPanel时,如果两个页面存在相同的id。的相关文章

跨域网站实现了单点登录,但各网站的每个页面继承验证类,导致页面加载时 刷新两次

问题描述 跨域网站实现了单点登录,但各网站的每个页面继承验证类,导致页面加载时刷新两次各网站加载较慢单点登录原理是各网站的用户凭证保存到验证服务器的cache中请问有什么异步方法不让每个页面都刷新一次谢谢 解决方案 解决方案二:每个页面都访问单点登录系统?什么情况?你的网站,如果没有登录信息,才需要访问单点登录网页.而如果已经登陆过,你的网页该干什么还干什么.从单点登录网页重定向回到当前网站页面之后,当前网站应该从单点登录网站(根据传来的url参数)把用户的信息取过来保存,以后在打开别的页面时就

浅谈网站Site时出现两个首页现象

  笔者最近由于很忙,很少投稿什么文章了.之前貌似都是一周投稿一篇文章,现在也偷懒了,但是从现在开始,我会经常更新一些对新手朋友学习有所帮助的文章.废话不多说了,现在我们直入主题.浅谈下网站site时出现两个首页现象.可能很多朋友都遇到过或者看到过site一个网站时出现两个首页,现在笔者对其进行归类,大致可分为三类. 一.百度调整时发生的情况 今天笔者在无意中site下公司订单中的一个网站,发现一种奇怪的现象,那就是site竟然出现了两个首页.笔者在之前并未遇到过这种情况,百度了下虽然也有朋友遇

DIV与Table两种页面布局方式在大型网站的可用性比较

DIV与TABLE本身并不存在什么优缺点,所谓web标准只是推荐的是正确的使用标签,好比说:DIV用于布局,而TABLE则本来就是转二维数据的.让TABLE做该做的事,并不是说页面里不出现TABLE就是多么多么牛. 用DIV进行排版的优势就是我不说,大家应该都比较清楚.DIV是标准,是大势所趋,但并不意味着所有的页面都适合用它来做. 中国的门户和国外的有很大的区别,中国网民并不喜欢信息量少的页面,YAHOO到了中国页面上的内容就多了不少,而上次改为简洁的页面后访问量下降的厉害以至于没过几天就又改

重温两道页面重构面试题

最近一直在研习JavaScript,CSS方面的知识关注的甚少.偶然间又看到这两道页面重构面试题,心血来潮,重温一下,呵.其实这两道题之前就做过,挺有意思.题一:分别用2个DIV,3个DIV,5个DIV实现水平垂直均居中显示一个宽50px,高200px的正十字架.思路:水平垂直均居中的实现,当然非absolute加外边距负值结合莫属.闲话略去,看代码及演示吧.2个DIV实现的核心CSS代码: .div_a{width:50px; height:200px; background:#a40000;

javascript-js解决两个页面创建元素的问题

问题描述 js解决两个页面创建元素的问题 请问我想在点击a.html里头的一个button后能够在b.html里头创建一个div,请问我该怎么实现啊? 解决方案 这个你可以这么实现:给button一个点击事件,然后在点击事件里定义一个有值得变量,然后用location到b.html这时你在页面获取url然后将变量截取,最后 判断该变量的值,若是a.html点击后传递过来的值就创建一个div; 上面有不懂的你可以看javascript或者jQuery的帮助文档. 如果回答对你有帮助,请采纳 解决方

图片-点击标签进行两个页面切换(看图)

问题描述 点击标签进行两个页面切换(看图) 点击变换颜色,怎么实现的,求帮助. 解决方案 上面的那个带颜色的可以是个带颜色的view 改变他的frame 解决方案二: 用class通过js控制 解决方案三: 调用onclick方法,改变这个按钮的css样式,来回切换就是这个效果了

在jsp中两个页面和在一起切换显示

问题描述 在jsp中两个页面和在一起切换显示 举个例子 :有点像我们常用的任务管理器显示一样在顶上有多个选项 点击不同的选项 在主体中显示对应的内容 用frame实现吗?还是div?能给出简单的示例代码就跪谢了 解决方案 http://www.oschina.net/news/58448/20-best-jquery-tab-plugins这里有20个,总有一个你喜欢. 解决方案二: http://blog.sina.com.cn/s/blog_8fb83eec0100wm4r.htmljsp页

birt-Birt报表导出HTML时,预览页面乱码,急,在线等!

问题描述 Birt报表导出HTML时,预览页面乱码,急,在线等! 本人新手一个,在做java项目时,Birt报表导出HTML时,预览页面出现乱码,如下图 请求表单指定了__locale=zh_CN: action="" target="bizDaliyFrame" onsubmit="return searchReportCheck(this)"> Web.xml中也指定了locale: BIRT_VIEWER_LOCALEzh-CH 页面

string-为什么赋给值指针(动态指针)值时,两次输出不一样?并且输出的地址也不一样,怎么让它们一样

问题描述 为什么赋给值指针(动态指针)值时,两次输出不一样?并且输出的地址也不一样,怎么让它们一样 #include #include using namespace std;main(){ string str1; cout<<""输入一个数""; cin>>str1; char *Num1=new char[str1.length()]; int *num1=new int[str1.length()]; str1.copy(Num1st