3

コード例:

 <script>
      var data = new Array();
      data[0] = 'hi';
      data[1] = 'bye';
 </script>

 <script>
      alert(data[0]);
 </script>

これにより、次のエラーが発生します。data is not defined

このようなものをどのように機能させますか?特に、最初の<script>ブロックが ajax によってページにロードされていて、2 番目のブロックがそこから機能している場合。jQuery ソリューションは許容されます。

4

4 に答える 4

8

Newはキーワードではありません。

使用する:

var data = new Array();

または、より簡潔に:

var data = [];

編集後、最初のスクリプト ブロックが非同期的に読み込まれることに言及しました。あなたのコードは書かれたとおりには機能しません。dataページに読み込まれると、グローバル変数になります。コードを正しく実行するには、コールバック パターンを使用する必要があります。

非同期コードを投稿していないので、callbackサンプルは提供しません。ただし、簡単な解決策は次のとおりです。

var interval = setInterval(function(){
    if(data) {
        /* ... use data ... */
        clearInterval(interval);
    }
}, 500);
于 2012-04-09T17:10:34.740 に答える
3

グローバル変数を作成するには、ステートメントから「var」を省略します。'var'を省略すると、実際にはウィンドウの名前空間に変数が作成されます。

だから、zz = 1実際にはwindow.zz = 1

あなたが本当にしたいのなら、あなたは明示的に言うことができます

window.data = new Array(); //remember that new should be lowercase.

しかし、とにかくそれをより速く書くことができます

data = ['hi','bye'];
alert(data);
于 2012-04-09T17:14:37.690 に答える
0

jQueryを使用している場合は、;.getScript()を使用するのではなく試してみてください。.html()

// in separate file

data[0] = 'hi';
data[1] = 'bye';


// in main file

var data = [];

$.getScript(url).done(function() {
    alert(data[0]);
}).fail(function() {
    // handle error
});  
于 2012-04-09T17:26:36.787 に答える