我的全局变量有问题。
考虑到我有以下文件: init.html、main.html、init.js、main.js和help.js:
其中,init.html:
<HTML>
<HEAD>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"></script>
<script type="text/javascript" charset="UTF-8" src="init.js" ></script>
<script type="text/javascript" charset="UTF-8" src="main.js" ></script>
<script type="text/javascript" charset="UTF-8" src="help.js" ></script>
</HEAD>
<BODY>
<script>
$(document).ready(function() {
test();
});
</script>
</BODY>
</HTML>在init.js中:
function test(){
alert(window.glob);
}在main.html中:
<HTML>
<HEAD>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"> </script>
<script type='text/javascript' >
top.glob = "global variable";
</script>
<script type="text/javascript" charset="UTF-8" src="help.js" ></script>
<script type="text/javascript" charset="UTF-8" src="main.js" ></script>
</HEAD>
<BODY>
<div id="divtest"></div>
<form>
<input type="button" value="button" onClick="callTest()" />
</form>
</BODY>
</HTML>main.js:
function change(p){
window.glob = p;
$('#divtest').html("<iframe id='IFRAMEtest' width='720' height='400' frameborder='0' src='init.html'></iframe>");
}在help.js中:
function callTest(){
change('param');
}当我单击in按钮时,显示“全局变量”,但我需要显示"param“。
简而言之,我需要一个.js文件读取另一个js文件中的全局变量,其中这个变量被输入到用户事件调用的函数中。
谢谢。
编辑 -导入文件前初始化全局变量。js和使用顶部。工作在IE和火狐,但铬显示“未定义”
发布于 2011-12-07 13:43:58
看看这里:跨多个文件的Javascript中的全局变量 --主要是,您可能必须在实际文件之前声明全局变量,所以尝试在包含到help.js之前插入以下内容
所以试试看。
<script type='text/javascript' >
window.glob = "global variable";
</script>所以你的代码应该是:
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js" ></script>
<script type='text/javascript' >
window.glob = "global variable";
</script>
<script type="text/javascript" charset="UTF-8" src="help.js" ></script>
<script type="text/javascript" charset="UTF-8" src="main.js" ></script>
</head>试试看它是否有效。另外,为此从main.js中删除全局变量声明。
发布于 2011-12-07 13:41:31
实际上,没有一个跨窗口(框架)的全局上下文。“家族”中的所有帧都可以访问一个名为"top“的变量,该变量指向最上面的窗口,因此您可以使用它。
top.glob = "global variable";在你的iframe代码中:
function test(){
alert(top.glob);
}编辑- 下面是代码的一个稍微简化的版本,这对我来说很好。
发布于 2011-12-07 13:44:22
当您在框架内并且希望从父窗口中获得一个窗口变量时,您必须引用它。
使用top或window.top。
https://stackoverflow.com/questions/8416076
复制相似问题