有点坚持这个问题,我想我的switch语句不在工作状态。这是提示:
1)使用仅在读取数字零(0)时退出的sentinel while循环。
2)在哨兵圈内进行 2.a)阅读火枪手号码。你可以假设这是一个印在火枪手制服上的独特序列号。
2.b)查找下表,使用JavaScript switch语句查找匹配的名称,然后将名称保存到变量中。
2.c)使用innerHTML或document.write()打印匹配的名称,并提供适当的提示。
2.d)如果在下表中找不到针对给定火枪手编号的匹配,则给出错误消息。
现在这是我的代码:
var idnum;
var input;
input = window.prompt("Enter a Uniform ID (0 to quit): ");
idnum = parseInt(input);
function getData(rNum, cNum) {
var table = document.getElementById('musketeer');
var rowElem = table.rows[rNum];
var tdValue = rowElem.cells[cNum].innerHTML;
var match = parseInt(tdValue);
return match;
}
while (idnum != 0) {
switch (idnum) {
case 1001 === getData(2, 0):
document.writeln("That is Musketeer D'Artagnan");
break;
case 2034 === getData(3, 0):
document.writeln("That is Musketeer Athos");
break;
case 2178 === getData(4, 0):
document.writeln("That is Musketeer Aramis");
break;
case 1091 === getData(5, 0):
document.writeln("That is Musketeer Porthos");
break;
default:
document.writeln("That ID does not match a musketeer.");
}
}

<html>
<head>
<title>Lab 9</title>
</head>
<body>
<table id='musketeer' border=1 cellpadding=0 cellspacing=0>
<tr>
<td><strong>Musketeer Number</strong></td>
<td><strong>Musketeer Name</strong></td>
</tr>
<tr>
<td>1001</td>
<td>D'Artagnan</td>
</tr>
<tr>
<td>2034</td>
<td>Athos</td>
</tr>
<tr>
<td>2178</td>
<td>Aramis</td>
</tr>
<tr>
<td>1091</td>
<td>Porthos</td>
</tr>
</table>
</body>
</html>
&#13;
答案 0 :(得分:1)
这不是switch
语句的工作原理,您可以将case
值与某些内容进行比较。你应该这样写:
switch(number) {
case 1:
// do something
break;
case 2:
// do something else
break;
default:
// do default
break;
}
至于你的程序,你的提示应该在while循环中,所以它会反复询问一个数字,直到用户想要退出。
这样的事情:
var input = window.prompt("Enter a Uniform ID (0 to quit): ");
var idnum = parseInt(input);
while(number != 0) {
// use the number to perform a lookup
var name;
switch(idnum) {
case 1001:
// return the name NOT THE NUMBER
name = getData(2, 1);
break;
case 2034:
name = getData(3, 1);
break;
default:
name = "";
break;
}
// print out the name, or error (or you can write it to the page)
if(name != "") {
console.log("That is Musketeer " + name);
} else {
console.log("No Musketeer found with Uniform ID " + idnum);
}
// prompt for another number
input = window.prompt("Enter a Uniform ID (0 to quit): ");
idnum = parseInt(input);
}
答案 1 :(得分:0)
case 1001 === getData(2, 0):
无效。它实际上意味着&#34; 1001与getData(2,0)&#34;相同的情况。 (无论是真还是假)。
试,
case getData(2, 0):
这会将表中的值设置为切换案例之一。 请参阅此working example
答案 2 :(得分:0)
要动态解决此问题,您应该遍历表格,将输入与第一列进行比较,如果匹配则显示第二列的结果,例如
var table = document.getElementById('musketeer');
for(i=0; i<table.rows.length; i++) {
if(idnum==table.rows[i].cells[0].innerHtml){
alert("That is Musketeer " + table.rows[i].cells[1].innerHtml);
}
}