Глобальная переменная не держит? - PullRequest
1 голос
/ 16 июня 2011

Это должен быть действительно простой "сумасшедший" вопрос, но вот он:

Я пытаюсь настроить глобальную переменную в файле 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-игр, а не веб-страниц. Файлы cookie не используются.

Ответы [ 3 ]

3 голосов
/ 16 июня 2011

Ваша функция должна вызываться только один раз из-за $ (document) .ready (...).Итак, я предполагаю, что вы перезагружаете страницу, чтобы снова и снова отображалось предупреждение ...

Может быть, вам следует использовать куки, а не просто старую переменную JS ..?

3 голосов
/ 16 июня 2011

Полагаю, вы хотите проверить, впервые ли пользователь открывает страницу и открывает учебник, если это так?

Невозможно так, как вы хотите это сделать. Каждый раз, когда ваша страница загружается, ваш скрипт оценивается снова. Таким образом, это означает, что переменная firstTime создана и имеет значение true. Что вам нужно, так это постоянное хранилище на клиенте для хранения данных, в первый раз или нет. Вам нужно будет установить cookie или вызвать localStorage API , если вы не беспокоитесь о старых браузерах.

1 голос
/ 16 июня 2011

Что делает okBoxCall?Если у вас есть какая-либо ошибка в okBoxCall, firstTime = false не будет выполнен.Установите значение перед вызовом okBoxCall.

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

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

   }
});
...