2010-06-08 20 views
7

¿Puedo usar intervalos en una instrucción switch?javascript cambiar utilizando intervalos

Como

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

No, no puedes ... – psychotik

Respuesta

14

Esto debería funcionar sin embargo:

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

listo! (esto es relleno, 15 char min argh!) – Rob

+0

Solía ​​hacer esto en vb todo el tiempo. No se puede hacer en C# (para bien o para mal) ... –

+0

funky! (relleno) –

3

No. switch se puede usar solo con valores discretos. Para intervalos, deberá usar una declaración if.

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

1 para la respuesta correcta. +1 nuevamente, si pudiera, para deletrear discretamente correctamente. ;-) –

1

A veces un interruptor es un trabajo demasiado

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; 
Cuestiones relacionadas