2010-06-08 4 views
7

Puis-je utiliser des intervalles dans une instruction switch?Commutateur javascript utilisant des intervalles

Comme

switch (parseInt(troops[i])) { 
       case <10: 
        editbox.style.fontSize = "13px"; 
        break; 
       case <100: 
        editbox.style.fontSize = "12px"; 
        break; 
       case <1000: 
        editbox.style.fontSize = "8px"; 
        editbox.size = 3; 
        //editbox.style.width = "18px"; 
        break; 
       default: 
        editbox.style.fontSize = "10px"; 
      } 

???

+0

Non, vous ne pouvez pas ... – psychotik

Répondre

14

Cela devrait fonctionner si:

var j = parseInt(troops[i]); 
switch (true) { 
      case (j<10): 
       editbox.style.fontSize = "13px"; 
       break; 
      case (j<100): 
       editbox.style.fontSize = "12px"; 
       break; 
      case (j<1000): 
       editbox.style.fontSize = "8px"; 
       editbox.size = 3; 
       //editbox.style.width = "18px"; 
       break; 
      default: 
       editbox.style.fontSize = "10px"; 
     } 
+0

intelligent! (c'est charge, 15 argh min min!) – Rob

+0

J'avais l'habitude de faire ceci en vb tout le temps. Ne peut pas le faire en C# (pour le meilleur ou pour le pire) ... –

+0

funky! (remplisseur) –

3

Le numéro switch peut être utilisé uniquement avec des valeurs discrètes. Pour les plages, vous devrez utiliser une instruction if.

var val = parseInt(troops[i]); 
if (val < 10) { 
    editbox.style.fontSize = "13px"; 
} else if (val < 100) { 
    // ... 
} else { 
} 
+0

+1 pour la bonne réponse. +1 à nouveau, si je pouvais, pour l'orthographe discrète correctement. ;-) –

1

Parfois, un interrupteur est trop comme travail

var j= parseInt(troops[i]), 
val= j<10? 13: j<100? 12: j<1000? 8: 10; 

editbox.style.fontSize= val+'px'; 
if(val== 8) editbox.size= 3; 
Questions connexes