0

最初に、これを一行で説明する方法がわからない、タイトルが悪いことをお詫びします。

私はこのJavascript関数を持っています(質問のために取り除かれています)...

function change_col(zone){

    var objects= zone1227.getObjects();

}

関数に整数を渡しています。「zone1227」がある場合、その 1227 を渡す整数にしたいと思います。

私はこれを試しました;

var zonename = "zone" + zone;

var objects= zonename.getObjects();

しかし、それはうまくいきません。

これは可能ですか?関数は、渡される可能性のあるすべての整数に対して存在しますが、関数名がハードコーディングされた if ステートメントの長いリストではなく、コードをコンパクトに保つ​​ことを望んでいました。

4

2 に答える 2

2

zone1227は明らかにグローバル変数なので、window.zone1227やと書くこともできますwindow['zone1227']。これは、これを書くことで、あなたが説明したことを達成できることを意味します:

function change_col(zone){

    var objects= window['zone' + zone].getObjects();

}

それでも、上記の Interrobang のコメントには同意します。これは、本当に達成したいことを達成するための良い方法ではありません。名前を含む文字列を介してグローバル変数を参照しないでください。

于 2012-09-12T19:03:44.323 に答える
0

いいえ、文字列の値で変数を参照することも、変数名に何かを連結することもできません。編集:できることがわかりました。あなたはまだすべきではありません。

はい、長いハードコードされた if/elseif シーケンスの使用を避けることができます: 配列を使用してください。

次に、次のように言えます。

function change_col(arr, i)
{
    var objects= arr[i].getObjects();
}

呼び出しは次のようになります。

change_col(zone, 1227);
于 2012-09-12T19:02:39.440 に答える