我有一组动态生成的数组。我想要做的是实现自动完成功能。我想在click事件处理程序中使用这些数组,方法是动态获取名称并将其分配给本地数组。但这不起作用(我不确定我的代码)。有没有办法实现这个目标?
以下是我认为应该有效的代码(不起作用):
<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>
答案 0 :(得分: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 :(得分:1)
所有全局变量都是window对象的成员,因此:
arrayTmp = window["ga_"+id];
但我个人将数据放在这样的对象中:
data = {
'input1': ['India','Russia','Norway'],
'input2': ['Delhi','Mumbai','Hyderabad']
};
...
arrayTmp = data[id];
答案 2 :(得分:1)
arrayTmp
中的内容只是一个字符串"ga_input1"
。相反,请尝试eval("arrayTmp=ga_"+id);
。
答案 3 :(得分:0)
eval('var arrayTmp = ga_'+ id); 警报(arrayTmp [0]);