web-dev-qa-db-fra.com

Commutateur cas avec conditions

Est-ce que j'écris le cas d'interrupteur correct?

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');
                }

Pour une raison quelconque, l'alerte ne se produit pas lorsque les conditions sont remplies!

38
Jasl

Vous ne devez pas utiliser switch pour ce scénario. C'est la bonne approche:

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

Un commutateur fonctionne en comparant le contenu de switch() à chaque case.

switch (cnt) {
    case 1: ....
    case 2: ....
    case 3: ....
}

fonctionne comme:

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

Par conséquent, vous ne pouvez avoir aucune logique dans les déclarations de cas.

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

fonctionne comme

if (cnt == (cnt >= 10 && cnt <= 20)) ...

et c'est juste un non-sens. :)

Utilisez if () { } else if () { } else { } à la place.

87
deceze

Cela devrait fonctionner avec ceci:

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

Quelque chose que je suis tombé sur en essayant de faire tourner Spinner, c’était de permettre une certaine souplesse dans le script sans utiliser une tonne d’énoncés if.

Comme il s'agit d'une solution plus simple que d'effectuer une itération dans un tableau pour rechercher une seule instance d'une classe, le script est nettoyé. Toutes les suggestions pour nettoyer davantage le code sont les bienvenues.

$('.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

Ce que vous faites est de rechercher (0) ou (1) les résultats.

(cnt> = 10 && cnt <= 20) renvoie true ou false.

--edit-- vous ne pouvez pas utiliser case avec des expériences booléennes (logiques). L'instruction cnt> = 10 renvoie zéro pour false ou un pour true. Par conséquent, nous allons case (1) ou case (0 ) qui ne correspondra jamais à la longueur. --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

Switch case est une aide complète au lieu de if else:

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