【问题标题】:Why is my switch not working?为什么我的开关不工作?
【发布时间】:2017-02-17 01:36:08
【问题描述】:

如果你输入数字标记,我有一个 switch 语句给你一个字母标记。我没有从 chrome 得到任何错误,所以我不知道我做错了什么。我会只是格式错误吗?

<html>
   <body>
<h1>Rank Your Mark!!</h1>
Enter your mark to rank it.

 <input type="number" name="grade" id="mark">
 <input type="button" name="mark" id="grade" value="Rate" onclick="rateMark()">

      <script>
function rateMark(){
  switch(grade)
  {
    case"F":
      mark > 50;
      break;

    case"D":
      mark >= 50 && mark <=59.9;
      break;

    case"C":
      mark >= 60 && mark <=69.9;
      break;

    case"B":
      mark >= 70 && mark <= 79.9;
      break;

    case"A":
      mark >= 80 && mark <= 89.9;
      break;

    case"A+":
      mark >= 90 && mark <= 100;
      break;
  }
  document.getElementById("demo").innerHTML = "You got a" + mark;
}
  </script>
  <br>
<p id="demo"></p>
   </body>
   </html>

【问题讨论】:

  • switch 不能这样工作;你需要一串if/else if
  • @Blakethepatton 你知道我做错了什么吗,因为它显示的是 [object HTMLInputElement] 而不是字母?
  • @Blakethepatton:嗯,我最初认为grade 是一个数字,字母等级应该是输出,但我想他们可能想要“你得到一个 >= 60 &&
  • 如果超过 60 且低于或等于 69.9 则应该是这种情况。 @瑞安
  • 仅供参考,您在引号内的“You got a”之后缺少一个空格

标签: javascript html switch-statement


【解决方案1】:

你的方法不对,检查一下它是如何工作的here.

您正在做的是比较 grade 变量是否为“F”、“D”、“C”.....

使用ifelse if 并将您的语句放入其中,如下所示:

var mark = document.getElementById('mark').value // gets the input value to "mark" variable
if(mark >= 70 && mark <= 79.9){
   // do something here
} else if(mark >= 80 && mark <= 89.9){
   // do another thing here
}

等等……

【讨论】:

  • 除非这仍然不正确。如果您想实际获取输入的值,则需要使用 mark.value
  • 是的,但他甚至没有得到输入的值。我只是想向他展示如何使用假设它的值在标记变量上的语句
  • @KyleMartin 使用 mark.value 不会解决问题,因为 OP 缺少像 var mark = document.getElementById("mark"); 这样的语句。 var mark = document.getElementById("mark").value; 反正更干净
  • 好吧,我也是这么想的,尽管这个 JSFiddle 另有说明。 jsfiddle.net/8ze5xopj/2 老实说,我不太确定为什么会这样。
  • @KyleMartin 我的立场是正确的。我以前从未见过有人以这种方式引用该元素,但正如您所说,它确实可以在没有 getElementById 的情况下工作,并且在这样做时确实需要 mark.value
【解决方案2】:

看这个:

<body>
<h1>Rank Your Mark!!</h1>
Enter your mark to rank it.

 <input type="number" name="grade" id="mark">
 <input type="button" name="mark" id="grade" value="Rate" onclick="rateMark()">

      <script>
      function rateMark(){
   	mark = document.getElementById("mark").value
        if (mark < 50) {
      	   mark = "F"
        } else if (mark >= 50 && mark <=59.9) {
      	   mark = "E"
        } else if (mark >= 60 && mark <=69.9) {
     	   mark = "D"
  	} else if (mark >= 70 && mark <= 79.9) {
      	   mark = "C"
        } else if (mark >= 80 && mark <= 89.9) {
           mark = "B"
        }  else if (mark >= 90 && mark <= 100) {
     	   mark = "A"
        }
       document.getElementById("demo").innerHTML = "You got a " + mark;
      }
  </script>
  <br>
<p id="demo"></p>
   </body>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2012-07-01
    相关资源
    最近更新 更多