Булева переменная не объявляется? - PullRequest
0 голосов
/ 02 июля 2018

Переписать программу, написанную на Unity с использованием HTML5, CSS и JavaScript, довольно сложно. Одна вещь, которая серьезно мешает мне сейчас, это то, что я сделал переменную с именем isGame, со значением true или false.

Код изначально присваивает ему значение false, а на определенных страницах (visa или переменная pageNumber с числовым значением) оно должно быть false. Не уверен, что я печатаю неправильно или что, но это не работает.

Вот код:

function setContent() {
  if (pageNumber == 1) {
    var isGame = false;
    document.getElementById("ng_audiocontainer").innerHTML = '<audio autoplay="autoplay"><source id="ng_intro" src="audio/example"></audio>';
    currentAudio = document.getElementById("ng_intro");
    document.getElementById("ng_body").innerHTML = '<img src="images/example.png" id="ng_logo">';
    document.getElementById("ng_lipsbutton").style.display = "none";
  }
}

Функция setContent(), как вы можете видеть, заполняет блок HTML содержимым и автоматически воспроизводит звук. Это в основном интерактивный инструмент обучения со стрелками влево и вправо. Правое увеличивает и вызывает setContent(), а левое уменьшает и вызывает setContent(), создавая своего рода разбитую на гетто фальсификацию.

Единственная проблема, с которой я сталкиваюсь, заключается в том, что переменная isGame не объявляется как false или true, а просто остается тем, что я изначально объявляю как в верхней части моего скрипта. Это не имеет никакого смысла, потому что я написал это так же, как написал номер страницы. Помогите?

Извините, если это TLDR, не знаю, как подвести итог.


РЕДАКТИРОВАТЬ:

Вот еще несколько деталей. В самом верху моего скрипта (который, кстати, является внутренним, так как в основном он будет вставлен в HTML-код веб-сайта), я объявляю pageNumber как 0 и isGame как false.

var pageNumber = 0;
var isGame = false;

function setContent() {

Следующая функция, конечно, выше. isGame вызывается, когда на определенные вещи нажимают, некоторые «неправильные», а некоторые «правильные», но я хочу, чтобы они только реагировали на нажатие, когда isGame == true. Вот этот код:

function rightLetter() {
  if (isGame == true) { 
    pageNumber++;
    setContent(); 
  }    

1 Ответ

0 голосов
/ 02 июля 2018

Вы перезаписываете isGame var каждый раз, когда вызываете функцию. Попробуйте это:

var isGame = false; // Declare your boolean var first

function setContent() {

    if (pageNumber == 1) {

        isGame = true; // Update your var here, to true or false
        document.getElementById("ng_audiocontainer").innerHTML = '<audio autoplay="autoplay"><source id="ng_intro" src="audio/example"></audio>';
        currentAudio = document.getElementById("ng_intro");
        document.getElementById("ng_body").innerHTML = '<img src="images/example.png" id="ng_logo">';
        document.getElementById("ng_lipsbutton").style.display = "none";

    }
}
...