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

你只需要一个功能。

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 回答