web-dev-qa-db-ja.com

条件付きスイッチケース

正しいスイッチケースを書いていますか?

var cnt = $("#div1 p").length;
                alert(cnt);
                switch (cnt) {
                    case (cnt >= 10 && cnt <= 20):
                        alert('10');
                        break;
                    case (cnt >= 21 && cnt <= 30):
                       alert('21');
                        break;
                    case (cnt >= 31 && cnt <= 40):
               alert('31');
                        break;
                    default:
                        alert('>41');
                }

何らかの理由で、条件が一致したときにアラートは発生しません!

38
Jasl

このシナリオでは、switchを使用しないでください。これは適切なアプローチです。

var cnt = $("#div1 p").length;

alert(cnt);

if (cnt >= 10 && cnt <= 20)
{
   alert('10');
}
else if (cnt >= 21 && cnt <= 30)
{
   alert('21');
}
else if (cnt >= 31 && cnt <= 40)
{
   alert('31');
}
else 
{
   alert('>41');
}
29
rochal

スイッチは、switch()にあるものをすべてのcaseと比較することで機能します。

_switch (cnt) {
    case 1: ....
    case 2: ....
    case 3: ....
}
_

次のように動作します:

_if (cnt == 1) ...
if (cnt == 2) ...
if (cnt == 3) ...
_

したがって、caseステートメントにロジックを含めることはできません。

_switch (cnt) {
    case (cnt >= 10 && cnt <= 20): ...
}
_

のように動作します

_if (cnt == (cnt >= 10 && cnt <= 20)) ...
_

それはナンセンスです。 :)

代わりにif () { } else if () { } else { }を使用してください。

87
deceze

これはこれで動作するはずです:

var cnt = $("#div1 p").length;

            switch (true) {
                case (cnt >= 10 && cnt <= 20):
                    alert('10');
                    break;
                case (cnt >= 21 && cnt <= 30):
                   alert('21');
                    break;
                case (cnt >= 31 && cnt <= 40):
                    break;
                default:
                    alert('>41');
            }
24
Fabien Ménager

スピナーを使用しようとしたときに思いついたのは、大量のifステートメントを使用せずにスクリプト内で柔軟性を持たせることでした。

これは、存在するクラスの単一のインスタンスをチェックするために配列を反復処理するよりも簡単なソリューションであるため、スクリプトをよりクリーンに保ちます。さらにコードをきれいにするための提案は大歓迎です。

$('.next').click(function(){
        var imageToSlide = $('#imageSprite'); // Get id of image

        switch(true) {
            case (imageToSlide.hasClass('pos1')):
                imageToSlide.removeClass('pos1').addClass('pos2');
                break;
            case (imageToSlide.hasClass('pos2')):
                imageToSlide.removeClass('pos2').addClass('pos3');
                break;
            case (imageToSlide.hasClass('pos3')):
                imageToSlide.removeClass('pos3').addClass('pos4');
                break;
            case (imageToSlide.hasClass('pos4')):
                imageToSlide.removeClass('pos4').addClass('pos1');
        }
    }); ` 
10
Pete Robie

あなたがしているのは、(0)または(1)の結果を探すことです。

(cnt> = 10 && cnt <= 20)は、trueまたはfalseを返します。

--edit-- boolean(logic)experessionsではcaseを使用できません。ステートメントcnt> = 10はfalseに対して0またはtrueに対して1を返します。したがって、case(1)またはcase(0 )これは長さに決して一致しません。 --edit--

7
jAndy
function date_conversion(start_date){
    var formattedDate = new Date(start_date);
    var d = formattedDate.getDate();
    var m =  formattedDate.getMonth();
    var month;
    m += 1;  // JavaScript months are 0-11
    switch (m) {
        case 1: {
            month="Jan";
            break;
        }
        case 2: {
            month="Feb";
            break;
        }
        case 3: {
            month="Mar";
            break;
        }
        case 4: {
            month="Apr";
            break;
        }
        case 5: {
            month="May";
            break;
        }
        case 6: {
            month="Jun";
            break;
        }
        case 7: {
            month="Jul";
            break;
        }
        case 8: {
            month="Aug";
            break;
        }
        case 9: {
            month="Sep";
            break;
        }
        case 10: {
            month="Oct";
            break;
        }
        case 11: {
            month="Nov";
            break;
        }
        case 12: {
            month="Dec";
            break;
        }
    }
    var y = formattedDate.getFullYear();
    var now_date=d + "-" + month + "-" + y;
    return now_date;
}
4
Waqar Ahmed

スイッチケースはif elseステートメントの代わりにすべてのヘルプがいっぱいです:

     switch ($("[id*=btnSave]").val()) {
        case 'Search':
            saveFlight();
            break;
        case 'Update':
            break;
        case 'Delete':
            break;
        default:
            break;
    }
1
hariomthapa.in