0

さまざまなJS関数があるとしましょう...

function stores(NY)
{
blah, blah, blah...
}
function stores(CA)
{
blah, blah, blah...
}
function stores(FL)
{
blah, blah, blah...
}

そして、このドロップダウンメニューからそれらを実行したい...

<select onchange="stores(this.value);">
<option>Please select your state from this list...</option>
<option value="NY">New York</option>
<option value="CA">California</option>
<option value="FL">Florida</option>
</select>

など、最大 50 の米国の州があるため、これらの関数を呼び出す簡単な方法が必要ですが、これは機能しません。どんなアイデアでも大歓迎です。よろしくお願いします!

4

3 に答える 3

2

最も簡単な方法は、キーと値のペアのキーが関数を呼び出すための名前であるオブジェクト リテラルを作成することです。

var methods = {
    "NY": function() {},
    "CA": function() {},
    "FL": function() {}
};

element.onchange = function() {
    methods[ this[ this.selectedIndex ].value ]();
};

この概念は、if ステートメントと case ステートメントを取り除き、オブジェクト指向です。プログラムでイベント ハンドラーを発行し、要素の選択されたインデックスの値に基づいて関数を呼び出します。

于 2012-09-30T13:54:23.700 に答える
0

必要な機能は 1 つだけです。

function stores(city) {
  if (city === 'NY') {
    //blah, blah, blah...
  } else if (city === 'CA') {
    //blah, blah, blah...
  } else if (...) {
    // ... and so on
  }
  // ...
}
于 2012-09-30T13:54:10.993 に答える
0

あなたはスイッチケースでこれを行うことができます

function stores(city) {

switch(city){
 case 'NY':
    //your stuf
    break;
  case 'CA':
    //your stuf
   break;
  case 'FL':
    //your stuf
   break;
 default:
   code to be executed if n is different from above all case
  }

}
于 2012-09-30T13:55:07.403 に答える