私のJavaScriptコードは、helpers.jsという外部ファイルにあります。このJavaScriptコードを呼び出すHTML内では、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ファイルを含める前に、変数を宣言する必要があります。 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()
が2つの異なるものを表示し、ページに書き込まれる値が2回目に異なることがわかります。
OK、みんな、ここに私の小さなテストもあります。同様の問題があったため、3つの状況をテストすることにしました。
すべての結果は予想通りでした。
チュートリアルを参照する代わりに、試してみるのが簡単だと感じたので、試してみました。私の結論:HTMLページに外部JSファイルを含めると、ページがレンダリングされる前に、外部JSのコンテンツがHTMLページに「コピー/貼り付け」されます。または、必要に応じてPHPページに移動します。 ここで間違っている場合は修正してください。ありがとう。
私のサンプルファイルは次のとおりです。
外部JS:
var global = 0;
function f1()
{
alert('fired: f1');
global = 1;
alert('global changed to 1');
}
function f2()
{
alert('fired f2');
alert('value of global: '+global);
}
HTML 1:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
HTML 2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index2.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
こんにちは、1つのjsファイルから別のjsファイルに値を渡すには、ローカルストレージの概念を使用できます
<body>
<script src="two.js"></script>
<script src="three.js"></script>
<button onclick="myFunction()">Click me</button>
<p id="demo"></p>
</body>
Two.jsファイル
function myFunction() {
var test =localStorage.name;
alert(test);
}
Three.jsファイル
localStorage.name = 1;
// Javascriptファイル1
localStorage.setItem('Data',10);
// Javascriptファイル2
var number=localStorage.getItem('Data');
htmlのJSファイルをリンクすることを忘れないでください:)
グローバル変数ではなく、「ローカルストレージ」を使用する必要があると思います。
「ローカルストレージ」が非常に古いブラウザでサポートされない可能性がある場合は、「ローカルストレージ」の可用性を確認し、利用できない場合は他の方法を使用する既存のプラグインの使用を検討してください。
http://www.jstorage.info/ を使用しましたが、これまでのところ満足しています。
次のようなjsonオブジェクトを作成できます。
globalVariable={example_attribute:"SomeValue"};
fileA.jsで
FileB.jsから次のようにアクセスします:globalVariable.example_attribute