JavaScript,Switch Statement

时间:2018-02-21 01:08:11

标签: javascript html

有点坚持这个问题,我想我的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;
&#13;
&#13;

3 个答案:

答案 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);
  } 
 }