这应该是一个非常简单的“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。
答案 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!");
}
});