动态创建javascript数组,其名称在java脚本字符串中

时间:2012-03-26 09:42:01

标签: javascript arrays

我有一组动态生成的数组。我想要做的是实现自动完成功能。我想在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>

4 个答案:

答案 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]);