The switch Statement
An alternative to the if...else if construct can be used to simplify
multiple condition tests where an expression evaluates to discrete string or numeric values. These
multiple tests are formed by using the switch statement with
case entries testing for expected values and providing
processing code on a match.
switch (expression) {
case "value1":
do this...
break;
case "value2":
do this...
break;
case "value3":
do this...
break;
...
[
default:
do this...
break;
]
}
Figure 4-11. General format for switch statement.
The expression tested in the switch
statement evalutes to a string or numeric value. Then, a branch is made to the
case entry matching the value. Each group of statements inside a case
entry ends with a break statement to exit case processing. If the
expression evaluates to a value that does not have an
associated case, then default processing
is performed.
The following example is a rewrite of the previous if...else if
script using a switch statement to test the arithmetic
operators and make appropriate calculations.
Figure 4-12. Testing conditions with a switch statement.
window.onload = init;
function init() {
var BtnAdd = document.getElementById("");
var BtnSub = document.getElementById("");
var BtnMul = document.getElementById("");
var BtnDiv = document.getElementById("");
BtnAdd = Compute;
BtnSub = Compute;
BtnMul = Compute;
BtnDiv = Compute;
var txtAnswer = document.getElementById("");
txtAnswer.onfocus = blur();
}
function Compute() {
var No1 = document.getElementById("Number1").value;
var No2 = document.getElementById("Number2").value;
var Answer = document.getElementById("Answer");
if ( isNaN(No1) || isNaN(No2) || No1 == "" || No2 == "" ) {
alert("Please enter numbers in the text boxes.");
} else {
switch (this.value) {
case "+":
Answer.value = parseFloat(No1) + parseFloat(No2);
break;
case "-":
Answer.value = No1 - No2;
break;
case "*":
Answer.value = No1 * No2;
break;
case "/":
Answer.value = No1 / No2;
break;
}
}
}
</script>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td></td>
<td><input id="Number1" type="text"
style="width:50px; text-align:right"></td>
<tr>
<td><input type="button" value="+" style="width:20px"
id="btnAdd">
<input type="button" value="-" style="width:20px"
id="btnSub">
<input type="button" value="*" style="width:20px"
id="btnMul">
<input type="button" value="/" style="width:20px"
id="btnDiv">
</td>
<td><input id="Number2" type="text"
style="width:50px; text-align:right"></td>
</tr>
<tr>
<td></td>
<td>--------</td>
</tr>
<tr>
<td style="text-align:right">= </td>
<td><input id="Answer" type="text" style="width:50px; text-align:right"
id="txtAnswer"></td>
</tr>
</table>
Listing 4-10. Code to test conditions with a switch statement.
The switch statement tests the Operator
variable. One of four string values is detected: "+",
"-", "*", or "/". The script
branches to the matching case entry and performs the arithmetic, exiting
the case at its break statement.