我正试图让它发挥作用:
function whatever(arg) {
eval(arg) + '_group' = [];
}
目的是只有一个函数而不是三个具有基本相同的内容但具有不同的变量名。
最后我希望有类似的东西:
a_group = [];
b_group = [];
这样做,我收到了错误:
ReferenceError: Invalid left-hand side in assignment
修改
这是我正在尝试创作的原始功能。但它不起作用。
function collect_all_values_for(field_name) {
switch(field_name) {
case 'states':
use = 'state';
case 'cities':
use = 'city';
case 'neighborhoods':
use = 'neighborhood';
}
window[field_name + '_group'] = [];
n_fields = $('[id^=' + use + '_]').length-1;
i = 0;
field_value = 0;
for (i = 0; i<= n_fields; i++) {
if (i == 0) {
field_value = $('#' + use).val();
}else{
field_value = $('#' + use + '_id' + i).val();
}
//states_group.push(field_value);
window[field_name + '_group'].push(field_value);
}
}
查看控制台输出:
states_group
[undefined, undefined, undefined]
然后我应该可以将其称为:
collect_all_values_for('states');
collect_all_values_for('cities');
collect_all_values_for('neighborhoods');
提前致谢。
答案 0 :(得分:3)
function whatever(arg) {
window[arg + '_group'] = [];
}
这会将a_group
,b_group
设置为全局变量。
要访问这些变量,请使用:
window['a_group'], window['b_group']
等等。
在switch
中,您应该使用break;
。
switch(field_name) {
case 'states':
use = 'state';
break;
case 'cities':
use = 'city';
break;
case 'neighborhoods':
use = 'neighborhood';
break;
}
var myObject = {};
function whatever(arg) {
myObject[arg + '_group'] = [];
// output: { 'a_group' : [], 'b_group' : [], .. }
}
// to set value
myObject[arg + '_group'].push( some_value );
// to get value
myObject[arg + '_group'];
答案 1 :(得分:1)
虽然你真的不应该使用eval这应该有帮助
eval(arg + '_group') = [];
答案 2 :(得分:1)