Глобальные переменные в JavaScript через несколько файлов

Набор моего кода JavaScript находится во внешнем файле, названном helpers.js. В HTML, который называет этот код JavaScript, я нахожу меня нуждающимся в знании, если определенная функция от helpers.js была вызвана.

Я попытался создать глобальную переменную путем определения:

var myFunctionTag = true;

В глобальной области видимости и в моем HTML-коде и в helpers.js.

Вот то, на что похож мой HTML-код:

<html>
...
<script type='text/javascript' src='js/helpers.js'></script>    
...
<script>
  var myFunctionTag = false;
  ...
  //I try to use myFunctionTag here but it is always false, even though it has been se t to 'true' in helpers.js
</script>

То, что я пытаюсь сделать даже выполнимый?

121
задан gsamaras 13 November 2015 в 21:27
поделиться

2 ответа

Вам нужно объявить переменную до включения файла helpers.js. Просто создайте тег script над include для helpers.js и определите ее там.

<script type='text/javascript' > 
  var myFunctionTag = false; 
</script>
<script type='text/javascript' src='js/helpers.js'></script>     
... 
<script type='text/javascript' > 
  // rest of your code, which may depend on helpers.js
</script>
117
ответ дан 24 November 2019 в 01:33
поделиться

Переменная может быть объявлена в файле .js и просто упоминаться в HTML-файле. Моя версия helpers.js:

var myFunctionWasCalled = false;

function doFoo()
{
    if (!myFunctionWasCalled) {
        alert("doFoo called for the very first time!");
        myFunctionWasCalled = true;
    }
    else {
        alert("doFoo called again");
    }
}

И страница для проверки:

<html>
<head>
<title>Test Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="helpers.js"></script>
</head>

<body>


<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>

<script type="text/javascript">doFoo();</script>

<p>Some stuff in between</p>

<script type="text/javascript">doFoo();</script>

<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>

</body>
</html>

Вы увидите, что тест alert() отобразит две разные вещи, и значение, записанное на страницу, во второй раз будет другим.

16
ответ дан 24 November 2019 в 01:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: