2012-03-26 1 views
0

動的に生成される配列のコレクションを持っています。私がやろうとしているのは、オートコンプリート機能を実装することです。私はクリックイベントハンドラでこれらの配列を使いたいのですが、名前を動的に取得し、それをローカル配列に代入します。しかし、それは動作していません(私は私のコードをabtには分かりません)。それを達成する方法はありますか?ここで名前がJavaスクリプト文字列にあるJavaスクリプト配列を動的に作成する

は、私は(動作しない)動作するはずと信じて私のコードです:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script> 
<script> 
    var ga_input1 = new Array('India','Russia','Norway'); 
    var ga_input2 = new Array('Delhi','Mumbai','Hyderabad'); 
</script> 
<body> 
    Countries: <input id="input1" type="text"/> 
    Cities: <input id="input2" type="text"/> 

    <script> 
     var arrayTmp = new Array(); 
     $('input').keydown(function(){ 
      var id = $(this).attr('id'); 
      arrayTmp = "ga_"+id; // What I believe here is the values of ga_input1/ga_input2 are assigned to array 'arrayTmp' 
      //alert(arrayTmp[0]); 
     }); 
    </script> 
</body> 

答えて

1

すべてのグローバル変数は、そう、ウィンドウオブジェクトのメンバーである:

arrayTmp = window["ga_"+id]; 

しかし、私は個人的にこのようなオブジェクトにデータを入れたい:

data = { 
    'input1': ['India','Russia','Norway'], 
    'input2': ['Delhi','Mumbai','Hyderabad'] 
}; 
... 
arrayTmp = data[id]; 
1

あなたは、「マップ」と、後で簡単にそれからそれらをフェッチ中に配列することをを置くことができます。ここで

はどのように行うのです:

var countryMap = {}; 
countryMap["Europe"] = ['Russia', 'England', 'Norway']; 
countryMap["America"] = ['USA', 'Canada', 'Mexico']; 

.... 

var arrayTmp = countryMap["America"]; 
alert(arrayTmp[0]); //USA 
alert(arrayTmp[1]); //Canada 
alert(arrayTmp[2]); //Mexico 
1

あなたがarrayTmpにあるものは、ただの文字列"ga_input1"です。代わりにeval("arrayTmp=ga_"+id);を試してください。

0

eval( 'var arrayTmp = ga_' + id); アラート(arrayTmp [0]);

関連する問題