0

これが有効なJavaScriptかどうか教えてもらえますか? この種のことは C# ではできないことはわかっていますが、js ははるかに緩い言語です。

var arrayToUse = "arr" + sender.value;
for (i = 0; i <= arrayToUse.length; i++) {
    // something..
}

具体的には、配列名の動的生成..

アップデート..

そのため、ドキュメントの準備ができたときに初期化される arrMyArray という配列があります。sender.value = "MyArray" - ただし、MyArray2 など、他のものである可能性があります

私は、sender.value 値によって示される配列を動的に反復処理したいと考えています。

4

3 に答える 3

6

はい、これは完全に有効です。

arrayToUseは文字列になり (の値に関係なくsender.value— 文字列に変換されます)、文字列の長さまでi反復します)。0

1 つのマイナーな注意: である必要がありますfor (**var** i = 0; …)。それ以外の場合iは、グローバル変数として扱われます。同時に複数のループを実行している場合、ほぼ確実に異常終了します。

編集:名前に基づいて配列を取得しますか? その場合、配列が定義されているコンテキストでそれを調べる必要があります。

グローバル配列の場合は、 を使用しますwindow

例えば:

var arrayName = "arr" + sender.value;
var array = window[arrayName];
…
于 2011-07-10T23:19:43.667 に答える
1

変数によって定義された変数名を取得するには、次evalのように を使用する必要があります。

var arrayToUse = eval("arr" + sender.value);

ただし、これには細心の注意を払う必要があります。制御sender.valueすると、誰かがこの方法でアプリケーション全体を乗っ取る可能性があるからです。通常は、別の解決策を探す必要があります。

変数がグローバルに定義されている場合は、window["arr" + sender.value]代わりにそれを検索できます。これはまだ理想的ではありませんが、セキュリティ リスクは少なくなります。

于 2011-07-10T23:23:15.930 に答える
1

必要なことは、「arr」+ sender.valueという名前の変数にアクセスすることです。内容が「arr + senter.value」である変数にアクセスしても、目的は実行されません。これは単なる文字列です。

その名前の変数にアクセスするには、グローバルとして検索できます (グローバルはブラウザーの window オブジェクトのメンバーです)。

window["arr" + sender.value]

これは、文字列を評価するために JavaScript 実行コンテキストでコードを実行しないため、eval() を使用するよりも安全で高速です。ウィンドウ オブジェクト内の変数をその名前で検索するだけです。

于 2011-07-10T23:24:08.410 に答える