« Multidimensional Arrays | Main | Goodies! »
Tuesday
Nov012011

More on the Switch Statement

I said in class on Monday that you could neither mix string and numeric case clauses in switch statments nor next switch statements. I was wrong on both counts (JavaScript is much more flexible than I gave it credit for). Here's sample code that does exactly what I said yesterday wasn't possible.

var leftAlpha = document.getElementById('left').value;
var leftNum = parseInt(leftAlpha);
var rightAlpha = document.getElementById('right').value;
var rightNum = parseInt(rightAlpha);
  
var left = isNaN(leftNum) ? leftAlpha : leftNum;
var right = isNaN(rightNum) ? rightAlpha : rightNum;
  
switch(left)
{
  case 'A':
    switch(right)
    {
      case 'A':
        alert('You entered A & A');
        break;
      case 'B':
        alert('You entered A & B');
        break;
      case 1:
        alert('You entered A & 1');
        break;
      case 2:
        alert('You entered A & 2');
        break;
    }
    break;
  case 'B':
    switch(right)
    {
      case 'A':
        alert('You entered B & A');
        break;
      case 'B':
        alert('You entered B & B');
        break;
      case 1:
        alert('You entered B & 1');
        break;
      case 2:
        alert('You entered B & 2');
        break;
    }
    break;
  case 1:
    switch(right)
    {
      case 'A':
        alert('You entered 1 & A');
        break;
      case 'B':
        alert('You entered 1 & B');
        break;
      case 1:
        alert('You entered 1 & 1');
        break;
      case 2:
        alert('You entered 1 & 2');
        break;
    }
    break;
  case 2:
    switch(right)
    {
      case 'A':
        alert('You entered 2 & A');
        break;
      case 'B':
        alert('You entered 2 & B');
        break;
      case 1:
        alert('You entered 2 & 1');
        break;
      case 2:
        alert('You entered 2 & 2');
        break;
    }
    break;
  default:
    alert('bad input');
}