Набор моего кода 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>
То, что я пытаюсь сделать даже выполнимый?
Вам нужно объявить переменную до включения файла 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>
Переменная может быть объявлена в файле .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()
отобразит две разные вещи, и значение, записанное на страницу, во второй раз будет другим.