全局变量没有持有?

时间:2011-06-16 18:37:44

标签: javascript jquery global-variables boolean

这应该是一个非常简单的“derp”问题,但这里是:

我正在尝试在JS文件中设置一个全局变量,这样我就可以控制一个动作何时触发。就我而言,如果okBoxCall为真,我只想调用firstTime。我最初将firstTime设置为true,然后将其更改为false。我的代码不能正常工作,因为它仍然不止一次调用okBoxCall

var Dialog;
var HUDWindow;
var smartPhone;
var firstTime = true;


$(document).ready(function(){
   smartPhone = new SmartPhone();
   initDialog();
   initHUDWindow(); 

   if(firstTime == true)
   {
       okBoxCall("Tutorial", "Welcome to McLarin Energy!");
       firstTime = false;
   }
});

我做错了什么?显然firstTime并未将其变为虚假......

编辑忘记提及这是针对3D游戏,而不是网页。不使用Cookies。

3 个答案:

答案 0 :(得分:3)

由于$(document).ready(...),您的函数只应调用一次。所以,我猜你正在重新加载页面,以便一次又一次地显示警报......

也许你应该考虑使用cookies,而不仅仅是一个普通的旧JS变量..?

答案 1 :(得分:3)

我猜你要检查这是否是用户第一次打开页面并打开教程?

你想要的方式是不可能的。每次加载页面时,都会再次评估脚本。这意味着创建了变量firstTime并将其设置为true。您需要的是客户端上的一些持久存储,以便存储它是否是第一次。如果您不打算忽视旧浏览器,则需要设置cookie或致电localStorage API

答案 2 :(得分:1)

okBoxCall在做什么?如果okBoxCall中有任何错误,则不会执行firstTime = false。在调用okBoxCall之前设置值。

$(document).ready(function(){
   smartPhone = new SmartPhone();
   initDialog();
   initHUDWindow(); 

   if(firstTime == true)
   {
       firstTime = false;
       okBoxCall("Tutorial", "Welcome to McLarin Energy!");

   }
});