2012-03-26 62 views
0

我有一個動態生成的數組集合。我想要做的是實現一個自動完成功能。我想在click事件處理程序中使用這些數組,通過動態獲取名稱並將其分配給本地數組。但是,這是行不通的(我不知道我的代碼)。有什麼辦法可以實現嗎?動態創建名稱爲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

所有的全局變量都是window對象的成員,因此:

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); alert(arrayTmp [0]);