【菜鸟求助】为什么不能传递变量?

cde32 2014-02-05 02:19:51
我以前向子窗口传递变量就是这样做的:
比如:父窗口有一个全局变量:_global
parent._global='我被子页面修改了值';//则在父窗口应用到此变量的值被修改
可是现在为什么传递不了了?好奇怪!!!!!!
我把全部代码贴出来:
父页面untitled.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<script language="JavaScript" type="text/javascript">
var _global="aaa";
document.write(_global);
</script>
<iframe src="untitled1.htm" scrolling="auto"></iframe>
</body>
</html>

子页面untitled1.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<script language="JavaScript" type="text/javascript">
parent._global='我被子页面修改了值';//则在父窗口应用到此变量的值被修改
</script>
</body>
</html>

无论怎样刷新载入框架,_global始终显示为:aaa
哪里出了问题????
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cde32 2014-02-06
  • 打赏
  • 举报
回复
引用 3 楼 u011461314 的回复:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<script language="JavaScript" type="text/javascript">
var _global="aaa";

window.onload = function(){
	document.write(_global);
}
</script>
<iframe src="untitled1.htm" scrolling="auto"></iframe>
</body>
</html>
引用 5 楼 shumozhisi 的回复:
其实是改变了_global的值的,你可以在子页面document.write(parent._global);打印出来是改变后的值,或者你在父页面使用window.setTimeout("document.write(_global)", 5000);可以发现打印出来的也是改变后的值。 这个可能是因为iframe加载和父页面javascript代码执行的顺序并不是完全同步的。 我觉得可以试下在子页面改变值后,再调用父页面的一个打印函数(也就是你想在父页面操作这个全局变量的函数),这样就能保证值是正确的
看来已经修改了,只是看不到。传变量搞得我头大,先结贴,等一下新开一贴~~ 谢谢各位!
酒笑生 2014-02-05
  • 打赏
  • 举报
回复
你在父页面打印_global的时候,它还没被子页面改边值呢,当然不论你如果刷新都是‘aaa’,你把打印的放到iframe下方试下,应该打印出的就是改变后的值
酒笑生 2014-02-05
  • 打赏
  • 举报
回复
其实是改变了_global的值的,你可以在子页面document.write(parent._global);打印出来是改变后的值,或者你在父页面使用window.setTimeout("document.write(_global)", 5000);可以发现打印出来的也是改变后的值。 这个可能是因为iframe加载和父页面javascript代码执行的顺序并不是完全同步的。 我觉得可以试下在子页面改变值后,再调用父页面的一个打印函数(也就是你想在父页面操作这个全局变量的函数),这样就能保证值是正确的
网络科技 2014-02-05
  • 打赏
  • 举报
回复
你试下把: var _global="aaa"; 改为: _global="aaa"; 看会不会改变
zhjdg 2014-02-05
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<script language="JavaScript" type="text/javascript">
var _global="aaa";

window.onload = function(){
	document.write(_global);
}
</script>
<iframe src="untitled1.htm" scrolling="auto"></iframe>
</body>
</html>
cde32 2014-02-05
  • 打赏
  • 举报
回复
引用 1 楼 shumozhisi 的回复:
你在父页面打印_global的时候,它还没被子页面改边值呢,当然不论你如果刷新都是‘aaa’,你把打印的放到iframe下方试下,应该打印出的就是改变后的值
我在各个位置都试过之后才来提问的!而且单独刷新框架也不行! 谁给找一下原因啊?谢谢!

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧