【发布时间】:2012-09-08 07:57:02
【问题描述】:
我花了 3 天时间试图解决这个简单的问题。我想要的只是让我的整个网站记住winversion 全局变量值并能够从函数中更改它。 (是的,我知道全局变量比 darthwader 更邪恶,但请这是我生命中唯一的好事)
我有一个带有 <iframe> 的 html 文件,当用户在其中点击时,我将不同的页面(来自我的域)加载到该 <iframe> 中。
这是我的 index.html(它在 <iframe> 周围有几个 div,但我很确定这无关紧要,因为其他一切都有效,而 javascript 仅适用于 <iframe>)
<script type="text/javascript" src='script.js'></script>
---------- ( some inner body html , not important)----------------
<iframe id="myiframe" src="mainproblems.html" >
默认的 iFrame 页面有这个 html 代码
<a href="#" onclick="setwinver('xp')";>I have Windows XP </a>
<a href="#" onclick="setwinver('win7')";> have Windows 7/Vista </a>
我的 script.js 是这个
// This is supposed to be my global variable to hold windows version value
var winversion ;
// This function (I officially hate it now) is supposed to change
// winversion variable based on what user clicked on the iFrame
function setwinver(ver)
{
//so now winversion should either have xp or win7 assigned
winversion=ver;
}
但稍后,在下一个 <iframe> 中,当我尝试在同一个 JavaScript 文件中读取 winversion 时,它显示未定义。当用户在第 1 页选择 windows 版本并在下一个 html 页面中单击链接以启动 msconfig 描述页面(在 <iframe> 中加载)时,会触发此 navigatenow() 函数。
function navigatenow()
{
if (winversion == "xp")
{
window.location.href=("msconfigxp.html");
}
else
{
window.location.href=("msconfig7.html");
}
}
我试过了:
使用/不使用
var。使用/不使用单引号,双引号(虽然我知道这没什么区别)。
阅读了十几篇关于吊装的文章。
使用 persistjs 几个小时。
冥想和祈祷!
没有任何效果。该死的winversion 变量仍然像我存在的目的一样未定义。
我想要的只是让我的 html 文件记住用户选择的 windows 版本(不,我无法以编程方式检测 windows 版本,我询问用户版本的目的是不同的)。
任何帮助将不胜感激解决此问题,如果没有,请建议一个合适的悬崖,我可以从中跳下。
【问题讨论】:
-
您检查控制台是否有错误?看起来您正试图在框架的上下文中调用
setwinver(),而该函数是在父窗口的上下文中定义的。 -
谢谢。但是只有 1 个 javascript 文件,并且 winversion 和 setwinver() 函数都在同一个文件中:(
-
“请推荐一个合适的悬崖,我可以从那里跳下来。”哈哈!
-
@LePrinceDeDhump 伙计,你太担心技术问题了 :)
-
嗯...不,我正在认真地尝试在未来 5 年内接管世界,而全球变量正在将我的胜利日推后:(
标签: javascript scope global-variables hoisting