1

このサイトを見てみると、ドキュメントレディ内でグローバル変数を更新し、それをドキュメントレディ外で使用する方法に関する多くの提案を見てきました。これらの組み合わせをいくつか試しましたが、どれもうまくいかないようです。何か助けはありますか?私は何が欠けていますか?

test = 0 ;

また

var test = 0;

また

test;

また

var test;

またはドキュメント外の宣言がまったく準備されていない

それから

    $(document).ready(function(){
  test = 4;
});

じゃあ後で...

alert(test);

出力:0、または未定義。なぜああ、私が望むように 4 を出力してみませんか! これが簡単に機能する通常の関数を使用できたらいいのにと思いますが、できません。json/jplot マテリアルを機能させるには、ドキュメントの準備ができている必要があります。

4

1 に答える 1

2

test = 4;グローバル変数を作成し、それを 4 に設定します。これは、より明示的な と同等window.test = 4です。

グローバル変数が作成される前は、その値は未定義として返されます。

alert(test)ドキュメント準備完了ハンドラーが実行された後に必ず呼び出す必要があります。つまり、イベント ハンドラーで呼び出すか、ドキュメント準備完了内から関数を呼び出す必要があります。

ドキュメント準備完了ハンドラーの下で呼び出すとalert(test)、ページが読み込まれるとすぐに実行されます。その時点で、その値は になりますundefined。ドキュメントの準備ができて初めて、test4 に設定されます。

また、呼び出されたローカル変数はグローバル変数をシャドーすることに注意してください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 にいるときにのみ表示します。その時点で、テンプレート内で置換される変数を指定できるようになります。

于 2013-02-09T07:34:01.383 に答える