首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使if/else if语句不那么笨拙。新手在这里

使if/else if语句不那么笨拙。新手在这里
EN

Stack Overflow用户
提问于 2011-10-05 18:26:27
回答 5查看 339关注 0票数 1

虽然这是一个在Breezingforms中为Joomla创建的表单,但我的问题更像是一个通用的javascript问题。我对javascript非常陌生,所以希望有人能很容易地回答这个问题。这是在表单初始化时调用的。

我在一个选择列表对象中使用javascript循环来隐藏/取消隐藏表单的各个部分,这取决于选择列表的选择。我正在努力使if/else if语句不那么笨拙。我相信有一种方法可以让这篇文章变得更简短、更简洁,但作为一个新手,我还没能弄明白。

顺便说一句(目前并不重要,但它会变得重要),我想将此脚本用于其他选择列表调用,但有一些小的变化。我仍然不太清楚代码的重用。如果有人对此有任何意见,我们将不胜感激。

顺便说一句,我是jQuery的新手,所以如果你去那里,请多关照!:)

代码语言:javascript
复制
var selListVal = "";
var selListInput =  JQuery("[name=\"mySelectionList[]\"]");
for (var i = 0; i < selListInput.length; i++)
 if (selListInput[i].value) {
  if (selListVal != "") selListVal += ",";
   selListVal += selListInput[i].value;
 }
    if( selListVal == "myselection01" ){
      ToggleFields('on', 'section', 'mysection01A', DeactivateField);
      ToggleFields('on', 'section', 'mysection01B', DeactivateField);
      } 
    else if( selListVal == "myselection02" ){
      ToggleFields('on', 'section', 'mysection01A', DeactivateField);
      ToggleFields('on', 'section', 'mysection01B', DeactivateField); 
      ToggleFields('on', 'section', 'mysection02A', DeactivateField);
      ToggleFields('on', 'section', 'mysection02B', DeactivateField);
      }
    else if( selListVal == "myselection03" ){
      ToggleFields('on', 'section', 'mysection01A', DeactivateField);
      ToggleFields('on', 'section', 'mysection01B', DeactivateField);
      ToggleFields('on', 'section', 'mysection02A', DeactivateField);
      ToggleFields('on', 'section', 'mysection02B', DeactivateField);
      ToggleFields('on', 'section', 'mysection03A', DeactivateField);
      ToggleFields('on', 'section', 'mysection03B', DeactivateField);
      }
     else {
      ToggleFields('off', 'section', 'mysection01A', DeactivateField);
      ToggleFields('off', 'section', 'mysection01B', DeactivateField);
      ToggleFields('off', 'section', 'mysection02A', DeactivateField);
      ToggleFields('off', 'section', 'mysection02B', DeactivateField);
      ToggleFields('off', 'section', 'mysection03A', DeactivateField);
      ToggleFields('off', 'section', 'mysection03B', DeactivateField);
      }
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-05 18:31:01

像这样怎么样?

代码语言:javascript
复制
var num = parseInt(selListVal.replace('myselection', ''));

if(num > 0){
    ToggleFields('on', 'section', 'mysection01A', DeactivateField);
    ToggleFields('on', 'section', 'mysection01B', DeactivateField);
}
if(num > 1){
    ToggleFields('on', 'section', 'mysection02A', DeactivateField);
    ToggleFields('on', 'section', 'mysection02B', DeactivateField);
}
if(num > 2){
    ToggleFields('on', 'section', 'mysection03A', DeactivateField);
    ToggleFields('on', 'section', 'mysection03B', DeactivateField);
}

或者用user968951来说明这个想法。

代码语言:javascript
复制
var num = parseInt(selListVal.replace('myselection', ''));

for (var x=1; x<=num; x++){
    ToggleFields('on', 'section', 'mysection0' + x + 'A', DeactivateField);
    ToggleFields('on', 'section', 'mysection0' + x + 'B', DeactivateField);
}
票数 2
EN

Stack Overflow用户

发布于 2011-10-05 18:34:04

您可以使用Switch语句并省略break。这样,还将执行case的以下语句。

代码语言:javascript
复制
switch(selListVal) {
    case "myselection03":
       ToggleFields('on', 'section', 'mysection03A', DeactivateField);
       ToggleFields('on', 'section', 'mysection03B', DeactivateField);
    case "myselection02":
        ToggleFields('on', 'section', 'mysection02A', DeactivateField);
        ToggleFields('on', 'section', 'mysection02B', DeactivateField);
    default:
        ToggleFields('on', 'section', 'mysection01A', DeactivateField);
        ToggleFields('on', 'section', 'mysection01B', DeactivateField);
}
票数 2
EN

Stack Overflow用户

发布于 2011-10-05 18:29:28

你可以拆分字符串,得到数字。然后,您可以使用for循环来切换所有字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7659897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档