日期:2014-05-16  浏览次数:20700 次

js怎样通过界面,跨框架取值?
本帖最后由 xiaolongit 于 2012-08-31 23:09:57 编辑 主要是嵌套框架,所以琢磨了好久没弄出来。
index.aspx  由两个框架组成 :
<iframe name="topR" src="top.aspx" ><iframe>,<iframe name="centerR" src="center.aspx" ><iframe>
center.aspx 也由两个框架组成:
<iframe name="leftR" src="left.aspx" ><iframe>,<iframe name="rightR" src="right.aspx" ><iframe> 

需求:点击了名称为rightF框架里的某一个按钮时弹出一个界面,弹出的界面位置位于框架的等级框架,也就是在index.aspx

之上,现在想给right.aspx界面中的某一个控件赋值。

parent.document.getElementById('rightR').contentWindow.document.getElementById('txt11').value="1x2y";  

//txt11是一个textbox控件,提示错误:对象为空

我在想,是不是应该parent.centerR.rightR.document.getElement.......这种模式随着父级再找到子级框架再找到控件啊?

但是不知道怎么实现。。高手求救呀,在线等.......
------解决方案--------------------
要先获取centerR的document,然后再获取到rightR的document才能调用getElementById,嵌套了多少iframe就得继续获取他父级的document,你的iframe添加ID,name不能用document.getElementById

<iframe name="topR" id="topR" src="top.aspx" ></iframe>,<iframe name="centerR" id="centerR" src="center.aspx" ></iframe>
center.aspx 也由两个框架组成:
<iframe name="leftR" id="leftR" src="left.aspx" ></iframe>,<iframe name="rightR" id="rightR" src="right.aspx" ></iframe>  


document.getElementById('centerR').contentWindow.document.getElementById('rightR').contentWindow.document.getElementById('txt11').value="1x2y";