11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour
Est-il possible dans un CASE d'indiquer une plage de valeur dans mon ex Entre 2 et 16 (soit >=2 et et <16) si oui comment ?

switch (heure) {
case '1':phrase="";break;
case 'Entre 2 et 16':phrase="";break;
case '17':phrase="Il est 17 heures"; break;
default: phrase="Défaut";break;

Merci
Jacques
Hello,

le case vérifie uniquement une égalité. Tu pourrais faire quelque chose comme ça :
switch (heure) {
case '1':phrase="";break;
case '2':
case '3':
case '4':
...
case '16':phrase="";break;
case '17':phrase="Il est 17 heures"; break;
default: phrase="Défaut";
}
mais du coup ça n'a aucun intérêt et autant utiliser des if imbriqués :
if (heure == 1) {
   phrase="";
} else if (heure < 17) {
   phrase="";
} else if (heure == 17) {
   phrase="Il est 17 heures";
} else {
   phrase="Défaut";
}
Bonsoir.

On peut faire ceci :


case (($val >= 10) && ($val <= 15)):
echo 'vrai';
break;


Comme pour if, on peut tester n'importe quelle condition. Mais c'est peu connu car pas vraiment détaillé dans la doc (sur php.net du moins).
Ouep en PHP (et donc en C) ça fonctionne.
En javascript, non, parce qu'il fait de la comparaison d'égalité. L'astuce est de comparer "true" à toute expression susceptible de renvoyer "true", comme ceci:
switch(true) {
  case i == 1: phrase = ""; break;
  case i > 1 && i < 17: phrase = ""; break;
  case i == 17: phrase = "Il est 17 heures"; break;
  default: phrase = "Défaut"; break;
}

Modifié par Ze Nenex (04 Sep 2009 - 00:56)
Salut,

Heyoan a écrit :

en php d'accord mais c'est aussi valable pour le JavaScript ?


j'avais pas fait attention Smiley murf