我必须设置一系列下拉列表输入控件,但除了手动生成一堆if语句之外,还有什么方法可以设置它吗


I have to set up a series of dropdown list input controls, but is there someway to set it up short of manually making a bunch of if statements?

我在一个网站上工作,该网站存储不同车辆的维护事件。但我需要按部分对它们进行分类,但我很难弄清楚如何构建页面。他们需要选择一个零件,然后选择一个位置,有时甚至更进一步。我曾想过使用Javascript来生成额外的下拉框,但必须生成一堆if,then语句似乎效率很低。有没有更有效的方法可以做到这一点?

编辑:我的伪代码就像

onChange=>changeFunction()

changeFunction{
if(ddlLocation=brakes){
add select boxes, populate with the individual parts
}else if (...){
}
}

我必须更多地了解特定的应用程序才能更好地提供帮助,但这里有一个更好的方法。

动态思考,您有一百个具有唯一名称的输入,使用具有模式中方法名称的方法创建类,这样您就可以循环使用输入名称,并根据方法命名约定检查可用方法,并调用它来专门处理该类型的输入。

在这种情况下,如果设置正确,就可以一次将输入传递给一个循环,该循环可以很好地处理随机输入,而不需要if,else。

例如:

$carparts = new CarParts();
foreach ($_POST as $name=>$value) {
    $method = strtolower($name) . 'Action';
    if (method_exists($carparts,$method)) {
        $carparts->$method($value);
    }
}

在大多数情况下——但取决于应用程序——最好使用switch语句,而不是链式if语句。Switch语句通常也比多个if条件更快。

在JavaScript中,当只有一个或两个条件需要评估时,if语句通常比switch语句更快。当有两个以上的条件,并且条件很简单(而不是范围)时,switch语句往往会更快。这是因为执行switch语句中的单个条件所需的时间通常小于执行if语句中的一个条件所需时间,因此只有当条件数量较多时,switch语句才是最佳的。

更多关于if else vs switch 的信息

Javascript案例陈述示例:

switch(n)
{
 case 1:
   execute code block 1
   break;
 case 2:
   execute code block 2
   break;
 default:
   code to be executed if n is different from case 1 and 2
 }