views:

80

answers:

3

Can I use intervals in a switch statement?

Like

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";
            }

???

+3  A: 

No. switch can be used only with discrete values. For ranges you'll have to use an if statement.

var val = parseInt(troops[i]);
if (val < 10) {
    editbox.style.fontSize = "13px";
} else if (val < 100) { 
    // ...
} else {
}
VoteyDisciple
+1 for the correct answer. +1 again, if I could, for spelling discrete correctly. ;-)
T.J. Crowder
+3  A: 

This should work though:

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";
        }
Cahit
clever! (this is filler, 15 char min argh!)
Rob
I used to do this in vb all the time. Can't do it in C# (for better or worse)...
Luke Schafer
funky! (filler)
trinithis
To be safe, you should include a radix argument when using parseInt(). So: `parseInt(troops[i],10)` can avoid some maddening bugs. For example, if troops[i] happens to have a value of "010", js guesses the radix as 2. Probably not what you want.
Ken Redler
A: 

Sometimes a switch is too much like work

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;
kennebec