1

HTML フォーム フィールドの値を使用して、JavaScript 関数で使用する変数を定義しようとしています。解決策はありますが、もっとエレガントな方法があると思います。

男性と女性の 2 つの名前の配列があり、HTML フォームには男性と女性の 2 つのラジオ ボタンのセットがあります。提出時に、私はこれを行います:

gender = $("#gender input:checked").val(); //get value of checked button
if (gender == "male" ) {
    name = male[Math.floor(Math.random()*male.length)];
} else {
    name = female[Math.floor(Math.random()*female.length)];
}
$("#result").html(name);

私の解決策はif-elseですが、性別の値を同じ名前の変数への参照に変換できるかどうか疑問に思いました。次に、if-else を次のようなものに置き換えることができます。

name = gender[Math.floor(Math.random()*gender.length)];

あなたの考えを聞きたいです。ありがとう!

4

2 に答える 2

2

性別をオブジェクトに入れることができます:

var genderData = {
   male: [ ... ]
   female: [ ... ]
}

次に、次の構文を使用します。

genderData[gender][Math.floor(Math.random() * genderData[gender].length)]

少し単純化して、読みやすくすることもできます。

var gd = genderData[gender];
name = gd[Math.floor(Math.random() * gd.length)];
于 2012-07-11T17:37:20.120 に答える
0

male/femaleがグローバル変数の場合、それらはオブジェクト内にありますwindow。この場合、次のようなものを使用できるはずです。

name = window[gender][Math.floor(Math.random() * window[gender].length)];

ここgenderで、は有効な変数名である必要があります。ただし、グローバル変数の使用はお勧めしません。代わりに、プロパティmaleと。を持つローカルオブジェクトを使用してfemaleください。

于 2012-07-11T17:36:47.167 に答える