2012-01-04 18 views
0

私のajaxアプリケーションでは、グローバル変数を作成する別の関数が呼び出される再帰関数を使用しようとしています。再帰関数の内部で。しかし、再帰関数の中でそのグローバル変数にアクセスすることはできないので、私は問題に遭遇しています(ただし、その関数を単独で呼び出すと利用できます)。再帰関数のコードは以下の通りです。再帰的なjavascript/ajax関数:関数内でグローバル変数にアクセスすることができません

ajaxCity.displayCell()は、数値の配列を含むwindow.cells []変数を設定します。アイデアは、それらの番号のそれぞれに対してtree()関数を呼び出すことです。

function tree (topCell) { 
    var ajaxCity = new Ajax(); 
    ajaxCity.displayCell(topCell); 

    for (var i = 0; i < window.cells[topCell].cKids.length; i++) { 
     tree(window.cells[topCell].cKids[i]); 
    } 
} 

window.cells []変数が、私は一度機能を実行するが、それは私が想像してるように動作するようにどのように私は、プロセスを変更する必要があり後に使用可能でしょうか?

ありがとうございました!

編集:私が得るエラーは次のとおりです。私は再び木の関数を呼び出す場合、それは1のために働くだろう「レベル」深く、再度エラーを与える

TypeError: window.cells[topCell] is undefined 

など

============== ==

ありがとう、私が指摘したように、問題は私がAjaxリクエストが戻ってくるのを待つ必要があることです。再度、感謝します!

答えて

2

私は、変数名に基づいて、ここにいくつかの仮定を作ってるんだが、私は

ajaxCity.displayCell(topCell); 

window.cells...の作成になりますその結果がAJAX呼び出しを、作ることをそれを取ります。

この場合、問題はAJAXが非同期であることです(これが最初のAです)。 AJAXリクエストを作成してすぐにそのリクエストの結果を使用しようとすると、結果が見つかりません。これは、AJAXリクエストがまだ返されていないためです。代わりにAJAXリクエストのコールバックで結果を処理する必要があります。

0
window.cells=new Array(); 

グローバルスコープ。

関連する問題