我正在处理一个jquery表单文件,该文件使用数组根据材料的选择填充大小的下拉列表。这工作正常,但现在我们正在添加一个额外的下拉列表,我们需要根据该选择在数组中使用不同的值。
这是当前工作代码的一部分:
var Material = new Array();
Material['UNC'] = new Array('40', '32');
Material['UNF'] = new Array('10', '24');
这基本上就是我想要的,不知道如何:
if($("#style").val() == "long") { var Material = new Array();
Material['UNC'] = new Array('45', '35');
Material['UNF'] = new Array('15', '29');} else {
var Material = new Array();
Material['UNC'] = new Array('40', '32');
Material['UNF'] = new Array('10', '24');}
我没有运气,我对Javascript功能并不是很熟悉。谢谢
答案 0 :(得分:2)
一种方式:
var isLong = $('#style').val() === 'long';
var material = {};
material.UNC = (isLong) ? [45, 35] : [40, 32];
material.UNF = (isLong) ? [15, 29] : [10, 24];
另一种方式:
var isLong = $('#style').val() === 'long';
var material = {};
if (isLong) {
material.UNC = [45, 35];
material.UNF = [15, 29];
}
else {
material.UNC = [40, 32];
material.UNF = [10, 24];
}
正如费利克斯·克林指出的那样,最好在阵列上使用物体作为材料。我还使用了小写变量名的JavaScript约定。您可以使用new Array
,而不是[]
使用new Object
代替{}
。
答案 1 :(得分:0)
您只需将Material
变量的声明移到块外:
var Material = new Array();
if($("#style").val() == "long") {
Material['UNC'] = new Array('45', '35');
Material['UNF'] = new Array('15', '29');
} else {
Material['UNC'] = new Array('40', '32');
Material['UNF'] = new Array('10', '24');
}
但是,正如其他人所指出的那样,对于这些非数字索引,您应该使用对象而不是数组。您还应该使用对象和数组表示法:
var Material = {};
if($("#style").val() == "long") {
Material['UNC'] = ['45', '35'];
Material['UNF'] = ['15', '29'];
} else {
Material['UNC'] = ['40', '32'];
Material['UNF'] = ['10', '24'];
}