test = 4;
グローバル変数を作成し、それを 4 に設定します。これは、より明示的な と同等window.test = 4
です。
グローバル変数が作成される前は、その値は未定義として返されます。
alert(test)
ドキュメント準備完了ハンドラーが実行された後に必ず呼び出す必要があります。つまり、イベント ハンドラーで呼び出すか、ドキュメント準備完了内から関数を呼び出す必要があります。
ドキュメント準備完了ハンドラーの下で呼び出すとalert(test)
、ページが読み込まれるとすぐに実行されます。その時点で、その値は になりますundefined
。ドキュメントの準備ができて初めて、test
4 に設定されます。
また、呼び出されたローカル変数はグローバル変数をシャドーすることに注意してくださいtest
。つまり、ローカル変数の値がグローバル変数の値の代わりに使用されます。を使用することで回避できますwindow.test
。
できることは 2 つあります。
- テーブル内のフィールドに ID を追加し、そのコンテンツをドキュメント準備ハンドラーに設定します。
- ページの残りの読み込みが完了し、テストが設定されたら、テーブルを挿入します
最初のアプローチをお勧めします:
$(document).ready(function(){
test = 4;
document.getElementById("test-value").innerHTML = test
});
このhtmlコードでは:
<table>
<!-- ...whatever else you have -->
<td id="test-value"></td>
<!-- ... -->
</table>
使用する<script>document.write(test)</script>
場合は、ドキュメント準備ハンドラー内で innerHTML (上記参照) を "..." に設定して、テーブルの html コードを挿入する必要があります。
このように行うこともできますが、必要以上に苦痛になります。innerHTML を "document.write(test)" のようなものに設定すると、ブラウザーは、ドキュメント準備完了ハンドラーを含むスクリプト タグが閉じられたと見なします。
_.template
代わりに、 underscore.jsなどのテンプレート エンジンを使用することをお勧めします。次に、基本的に HTML を script タグ内に配置し、document.ready にいるときにのみ表示します。その時点で、テンプレート内で置換される変数を指定できるようになります。