从下拉菜单中运行多个Javascript函数

时间:2012-09-30 13:50:42

标签: javascript html

假设我有不同的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个美国国家,这就是为什么我需要一种简单的方法来调用这些功能,但这不起作用。任何想法将不胜感激。谢谢你们先进的!

3 个答案:

答案 0 :(得分:2)

最简单的方法是创建一个对象文字,其键值对中的 keys 是调用函数的名称。

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

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

这个概念摆脱了if和case语句并且是面向对象的。我们以编程方式发出事件处理程序,并根据元素所选索引的值调用函数。

答案 1 :(得分:0)

你只需要一个功能。

function stores(city) {
  if (city === 'NY') {
    //blah, blah, blah...
  } else if (city === 'CA') {
    //blah, blah, blah...
  } else if (...) {
    // ... and so on
  }
  // ...
}

答案 2 :(得分: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
  }

}