因为最近在改一些JS的东西,今天遇到了一些<framset>下嵌套<frameset>的取值情况。
发现原来每个<frame>包含的页面都有自己的一个document对象,要想取得某个页面的值必须定位到该frame下,然后才能取到。
一下面的情况为例:index.jsp
<frameset rows="55,*" cols="*" frameborder="NO" border="0" framespacing="0">
<frame src="<%=basePath%>top.jsp" name="topFrame" scrolling="NO" noresize APPLICATION="yes">
<frameset cols="140,*" frameborder="NO" border="0" framespacing="0">
<frame src="<%=basePath%>leftMenu.jsp" name="leftFrame" scrolling="NO" noresize APPLICATION="yes">
<frame src="<%=basePath%>main.jsp" name="mainFrame" APPLICATION="yes">
</frameset>
</frameset>
main.jsp
<frameset rows="40,*,0" border="0">
<frame name="HeadFrame" src="<c:url value="a.jsp"/>" scrolling="no" application="yes">
<frame name="ListFrame" src="" scrolling="auto" application="yes">
<frame name="HiddFrame" application="yes">
</frameset>
如果想取到a.jsp中的某个id为test的元素则必须如下写
var mainFrame=window.top.document.frames( 'mainFrame')
var a=mainFrame.frames['HeadFrame'].a
如果你直接 mainFrame.a是取不到值的。
plus:
取得页面中frame的个数的方法
某个具体页面
页面所在frame的名字.frames.length
顶级页面
top.frames.length