2017-02-17 34 views
1

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

<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> 
+4

'之开关不象是那样工作;你需要一个'if' /'else if'链。 – Ryan

+0

@Blakethepatton你知道我做错了什么,因为它显示[object HTMLInputElement]而不是字母? –

+0

@Blakethepatton:嗯,我原本以为'grade'是一个数字,字母等级应该是输出,但我想他们可能想要“你有一个> = 60 && <= 69.9”?很难说。 – Ryan

回答

2

您没有使用正确的方式,检查它是如何工作here.

你在做什么是比较,如果变量为“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 
} 

所以上...

+1

除了这仍然是不正确的。如果你想实际得到输入的值,你需要使用'mark.value'。 –

+1

是的,但他甚至没有得到输入的价值。我只想告诉他如何使用陈述,假设它的值将在标记变量 –

+0

@KyleMartin使用'mark.value'不会解决问题,因为OP缺少像'var mark = document.getElementById( “标记”);'。 'var mark = document.getElementById(“mark”)。value;'无论如何都是干净的 –

0

看到这个:

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