您好我有3个javascript数组需要在单击3个可用按钮之一时传递给函数(每个数组一个按钮)
<button onclick="call(1)">Array1</button>
<button onclick="call(2)">Array2</button>
<button onclick="call(3)">Array3</button>
JS-
var arr1 = ["s","o","m","e"];
var arr2 =[];
var arr3 =[];
function call(x){
// some code here
if(x==1){
another_func(arr1);
}
else if(x==2){
another_func(arr2);
}
else if(x==3){
another_func(arr3);
}
}
这工作正常但我希望摆脱if if循环。由于数组名称只有数字'x'(点击时按钮传递了x),我试过 -
function call(x){
// some code here
var apple="arr"+x;
another_func(apple);
}
但是这变成了混乱。我知道,因为javascript是松散类型的语言,它将后一个参数解释为字符串而不是数组。
有人建议我该怎么办?
答案 0 :(得分:1)
您可以尝试使用多维数组。
像这样更改你的代码
var arr = [];
arr[1] = ["s","o","m","e"];
arr[2] =[];
arr[3] =[];
<button onclick="another_func(arr[1])">Array1</button>
<button onclick="another_func(arr[2])">Array2</button>
<button onclick="another_func(arr[3])">Array3</button>
这是一个有效的jsfiddle - http://jsfiddle.net/ao7jL1Lm/1/
答案 1 :(得分:1)
可能你可以选择临时数组:
var arr1 = ['f', 'i', 'r', 's', 't'];
var arr2 = ["s", "e", "c", "o", "n", "d"];
var arr3 = ["t", "h", "i", "r", "d"];
var temp = [arr1, arr2, arr3];//work around
var call = function(x) {
alert('Array >> ' + temp[x - 1]); // -1 to get the index
};
&#13;
<button onclick="call(1)">Array1</button>
<button onclick="call(2)">Array2</button>
<button onclick="call(3)">Array3</button>
&#13;
或者,你可以去临时对象:
var arr1 = ['f', 'i', 'r', 's', 't'];
var arr2 = ["s", "e", "c", "o", "n", "d"];
var arr3 = ["t", "h", "i", "r", "d"];
var temp = {
'1': arr1,
'2': arr2,
'3': arr3
}; //work around
var call = function(x) {
alert('Array >> ' + temp[x]);
};
&#13;
<button onclick="call(1)">Array1</button>
<button onclick="call(2)">Array2</button>
<button onclick="call(3)">Array3</button>
&#13;
答案 2 :(得分:0)
你可以得到一个工作版本in this jsfiddle(我使用过jQuery)。只需更改call()
函数即可使用another_func()
代替alert()
<button class="a" input="arr1" >Array1</button>
<button class="a" input="arr2" >Array2</button>
<button class="a" input="arr3" >Array3</button>
$( document ).ready(function() {
var arr1 = ["s","o","m","e"];
var arr2 =[];
var arr3 =[];
function call(x){
another_func(x);
}
$('.a').click(function(){
call(eval($(this).attr("input")));
})
});
但是,从您自己的版本到此动态版本,我必须进行以下更改:
call()
)在HTML元素中可用(如果需要)。call()
属性来定义input
函数中的循环,定义将传递哪个变量eval()
函数,因此输入属性传递的字符串被计算为相应的变量