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 Arrayuseを使用する代わりに、[]およびの代わりに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 に答える