Cela marche:
switch (true) {
case liCount == 0:
setLayoutState('start');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount<=5 && liCount>0:
setLayoutState('upload1Row');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount<=10 && liCount>5:
setLayoutState('upload2Rows');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount>10:
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
}
Une version précédente de cette réponse considérait les parenthèses comme le coupable. En vérité, les parenthèses ne sont pas pertinentes ici - la seule chose nécessaire est switch(true){...}
que vos expressions de cas soient évaluées en booléens.
Cela fonctionne parce que la valeur que nous attribuons au commutateur est utilisée comme base de comparaison. Par conséquent, les expressions de cas, également évaluées en booléens, détermineront quel cas est exécuté. Pourrait également switch(false){..}
inverser la tendance , passer et faire évaluer les expressions souhaitées comme fausses au lieu de vraies ... mais personnellement, préférez traiter des conditions qui évaluent la vérité. Cependant, cela fonctionne aussi, il vaut donc la peine de garder à l'esprit ce qu'il fait.
Par exemple: si liCount vaut 3, la première comparaison est true === (liCount == 0)
, ce qui signifie que le premier cas est faux. L'interrupteur passe ensuite au cas suivant true === (liCount<=5 && liCount>0)
. Cette expression prend la valeur true, ce qui signifie que ce cas est exécuté et se termine au break
. J'ai ajouté des parenthèses ici pour le rendre plus clair, mais elles sont facultatives, en fonction de la complexité de votre expression.
C'est assez simple et une manière élégante (si cela correspond à ce que vous essayez de faire) de gérer une longue série de conditions, où peut-être une longue série de conditions ìf() ... else if() ... else if () ...
pourrait introduire beaucoup de bruit visuel ou de fragilité.
À utiliser avec prudence, car il s'agit d'un modèle non standard, bien qu'il s'agisse d'un code valide.