长的javascript if else语句

Mic*_*son 0 javascript jquery refactoring if-statement

我有一系列if-else语句.我知道有一种更有效的方法可以做到这一点,但我对javascript不够熟悉.有人可以提供一些指导吗?

$('#webform-component-primary-credential--0').change (function() {
    if ($('#edit-submitted-primary-credential-0').val() == 35) {
      $('#edit-submitted-additional-credentials-0-47').attr('checked', false);
      $("#edit-submitted-additional-credentials-0-47").attr("disabled", "disabled");
    } else {
      $("#edit-submitted-additional-credentials-0-47").removeAttr("disabled");
    }
    if ($('#edit-submitted-primary-credential-0').val() == 41) {
      $('#edit-submitted-additional-credentials-0-53').attr('checked', false);
      $("#edit-submitted-additional-credentials-0-53").attr("disabled", "disabled");
    } else {
      $("#edit-submitted-additional-credentials-0-53").removeAttr("disabled");
    }
    if ($('#edit-submitted-primary-credential-0').val() == 13) {
      $('#edit-submitted-additional-credentials-0-29').attr('checked', false);
      $("#edit-submitted-additional-credentials-0-29").attr("disabled", "disabled");
    } else {
      $("#edit-submitted-additional-credentials-0-29").removeAttr("disabled");
    }   

});
Run Code Online (Sandbox Code Playgroud)

本系列中还有大约12个if-else语句,但这给出了一般的想法.

jra*_*jav 6

如果您总是检查相同的值,请使用switch-case语句:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/switch

(这也可以用在C/C++和许多其他借用它们语法的语言中.有些语言有变化,比如Ruby的case-when语法.)

你的代码实际上有点麻烦,无法考虑switch-case语句(它最适合一个长if () {} else if () {} ... else () {}链),但这是你可以做到的一种方法:

$('#webform-component-primary-credential--0').change (function() {
    var active_element;

    $("#edit-submitted-additional-credentials-0-47").removeAttr("disabled");
    $("#edit-submitted-additional-credentials-0-53").removeAttr("disabled");
    $("#edit-submitted-additional-credentials-0-29").removeAttr("disabled");

    switch ($('#edit-submitted-primary-credential-0').val()) {
        case 35:
            active_element = $("#edit-submitted-additional-credentials-0-47");
            break;
        case 41:
            active_element = $("#edit-submitted-additional-credentials-0-53");
            break;
        case 13:
            active_element = $("#edit-submitted-additional-credentials-0-29");
            break;
    }

    active_element.attr('checked', false);
    active_element.attr("disabled", "disabled");
});
Run Code Online (Sandbox Code Playgroud)