在函数中动态调用数组
Call Array Dynamically in a function
我有一张美国地图,所有50个州都是可点击的按钮,当用户点击一个州时,我想显示该州的信息,并动态调用该州的数组。下面是我自己微弱的尝试,显然不起作用。
var stateList = new Array("AK","AL","AR","AZ","CA","CO","CT","DC","DC2","DE","FL","GA","GU","HI","IA","ID",
"IL","IN","KS","KY","LA","MA","MD","ME","MH","MI","MN","MO","MS","MT","NC","ND","NE","NH","NJ","NM","NV","NY",
"OH","OK","OR","PA","PR","RI","SC","SD","TN","TX","UT","VA","VT","WA","WI","WV","WY");
function listenerForI( i ) {
document.getElementById(stateList[i])
.addEventListener('mousedown', function() {
stateSelect(stateList[i]);
}, false);
}
for (var i = 0; i < stateList.length; i++) {
listenerForI( i );
}
var HIdat = new Array(20,28,50,2) //one array for all 50 states COdat, AKdat, etc.
function stateSelect(state){
var display_data1 = state + "dat[0]";
alert(display_data1);
}
我应该使用eval()吗?我听说过可以用全球"窗口"做一些事情,但我不明白这是怎么回事。
您应该将状态数组存储在它们自己的对象中:
var stateData = {
HI: [1, 2, 3],
IL: [4, 5, 6],
...
};
var myData = stateData[state];
使用window
是一个选项,如下所示:
window[state + "dat"]
将为您获取阵列。
但我建议。。。正是SLaks刚刚发布的内容,所以改为发布。
在JavaScript中,全局变量是窗口对象的成员,因此您可以使用数组索引语法来获取它们,而无需使用eval
,这通常是要避免的,比如:
function stateSelect(state) {
var display_data1 = window[state + "dat"];
alert(display_data1);
}
相关文章:
- D3-如何为工具提示调用数组
- Asp.net将代码背后的数据传递给Javascript并调用数组
- 完成ajax调用数组的循环,而不是在某个调用出错时中断
- 构建Ajax调用数组时,JQueryAjax成功回调不起作用
- 需要帮助调用数组以在Html中发布
- jQuery,从变量调用数组对象的一部分
- 在循环中调用数组的索引导致错误
- 如何使用 jQuery 调用数组
- 如何调用数组的字符串进行显示
- 从另一个网页调用数组
- 在调用数组的映射函数时丢失它
- Javascript序列与函数调用数组
- 在输入字段中调用数组值
- 如何调用数组概念$mbAudio
- 如何使用jade中的变量调用数组'
- 如何调用数组中的一段数字
- 从HTML输入值调用数组
- 在JavaScript的另一个函数中调用数组
- 在jQuery中动态调用数组名
- 在函数中动态调用数组