0

我正在开发一个 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函数不是很熟悉。谢谢

4

2 回答 2

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];
}

正如 Felix Kling 指出的那样,最好使用对象而不是数组作为材质。我还使用了小写变量名的 JavaScript 约定。您可以使用. new Array_[]new Object{}

于 2013-02-21T02:36:40.630 回答
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'];
}
于 2013-02-21T02:40:06.220 回答