0

私はphpファイルを持っています。このファイルには次のコードがあります:

    <script language="JavaScript" type="text/javascript" src="jquery.js"></script>
    <script language="JavaScript">
        $(document).ready( function () {
            var myvar = <?php   echo json_encode($myvar);   ?> ;
        });
    </script>
    <script language="JavaScript" type="text/javascript" src="costum.js">  </script>

そしてcostum.jsファイルにはコードがあります:

$(document).ready( function () {
    alert(myvar );
});

これは機能しません。エラーコンソールは「myvar is undefined」を返します

PHPファイルにこれを書く場合(つまり、「document.ready」なし)

 <script language="JavaScript">
     var myvar = <?php   echo json_encode($myvar);   ?> ;
 </script>

costum.js ファイルでは、コードは既に機能しています。なぜこれが起こったのか教えてください。

4

3 に答える 3

5

試してみてください

<script>
    var myvar;
    $(document).ready( function () {
        myvar = <?php   echo json_encode($myvar);   ?> ;
    });
</script>

両方の関数から表示するには、変数をグローバル (つまり、外側のスコープ) として宣言する必要がありdocument.readyます。

補足として、language属性は必要ありません。Eventypeは必要ありません ( html5doctype を使用している場合)

于 2012-09-03T12:59:30.813 に答える
1

あなたmyvarはready-functionのローカルスコープにあります。var宣言を外側に移動して、グローバルにして他のスクリプトで使用できるようにします。

ただし、変数に代入するだけなので、とにかく DOMready を待つ必要はありません。使うだけ

<script type="text/javascript">
    var myvar = <?php echo json_encode($myvar); ?>;
</script>

ところで、このlanguage属性は非推奨です

于 2012-09-03T13:00:37.873 に答える
1

関数内のローカル変数は、関数スコープでのみ表示されます。

グローバルスコープで変数を宣言すると、それはグローバル変数になります。

次の方法でグローバルスコープに公開できます。

$(document).ready( function () {
      var myvar = <?php   echo json_encode($myvar);   ?>;
      window['myvar'] = myvar;
 });
于 2012-09-03T13:00:45.783 に答える