关于父页面和子页面相传值的问题可能一直困扰着不少人,这在平时的编程中随时都会遇到,在此就本人做ui的经历中遇到过这样的问题做点简单的总结。
首先从兼容性方面考虑,由于网民的个人爱好不一样,再加上浏览器的种类和版本的众多,而基本上每种浏览器的内核都不一样,甚至有些并不是完全基于W3C标准,所以有些js的语法在不同的浏览器上就会得到不同的效果,比如在ie6上访问一个对象,那个对象的id是obj,js获取这个对象的时候可以直接就拿obj来用,而火狐等很多浏览器则不能,必须符合W3C标准才行,应该写成document.getElementById(”obj”);再比如说求某个节点下面的子节点个数,可以试看下面的代码,在不同浏览器上又有可能不一样
<div id=”cov”>
<li>张三</li>
<li>李四</li>
<li>王王</li>
<li>友意博客</li>
</div>
<script type=”text/javascript”>
var bigcov = document.getElementById(”cov”);
alert(bigcov.childNodes.length);
</script>
先不扯远了,其实iframe是个很有用的东西,有很多优点,比如页面而已,跳转,优先级等,关于传值的问题基本上出现在跳转里面,这里先说一点注意,关于有传值的问题,把js代码写到子页面里面是最好不过的了,从父页面获取子页面不是个好办法,但从子页面往父页面传值很容易办到,首先来说,一个父页面可以存在多个子页面,而子页面又是可变的,这里会出现的一个问题马上就来了,看下面的代码
<iframe id=”parentHTML” name=”parentHTML” src=”text1.html”></iframe>这里的text1.html里面比如有个id叫text的控件,这时父页面去操作他能办到,但如果有其它链接指向这个iframe,然后另处一个页面里面没有text这个对象,那么父页面再来访问这个对象的时候就报错了,也许另外的这个子页面根本就与你父页面要用到的这个js无关,所以哪个页面与这个js有关,你就把写到那个页面去,比如父页面要用到子页面的text这个文本框的的传,那么你就在子页面把值传给父页面,你先在父页面设一个隐藏的文本,子页面就这样写:parent.document.getElementById(’obj’).value=”你要传的值”,这样父页面就得到子页面的值了,这样写是因为当前的子页面只承在于一个父页面,在此先就介绍关于iframe的父子传值问题,随后再谈谈关于弹出类的父子传值。

