2014-01-25 58 views
0

我想创建一个小网站,从提示中询问用户一个号码。那么一个信息会出现在一个div标签上,告诉用户他们得到了什么等级。它不起作用。我的代码不工作

举例:如果我得到90%,会出现一条消息告诉我,我的成绩是A +。

这里的代码:

<h1>Prelab1 Ex2</h1><br> 
<div id="div2"></div> 
<script> 

    var inputperc = prompt("Enter a percentage"); 


    if(inputperc > 100 || inputperc < 0 || isNaN(inputperc)){ 
    document.getElementById("div2").innerHTML = "Enter a valid Percentage value between 0 and 100"; 
    else{ 
    if(inputperc >= 90 && inputperc <= 100){ 
     document.getElementById("div2").innerHTML = "A+"; 
     } 
     if(inputperc>90 && inputperc<100){ 
     document.getElementById("div2").innerHTML = "A+"; 
     } 
     if(inputperc>85 && inputperc<89){ 
     document.getElementById("div2").innerHTML = "A"; 
     } 
     if(inputperc>80 && inputperc<84){ 
     document.getElementById("div2").innerHTML = "A-"; 
     } 
     if(inputperc>77 && inputperc<79){ 
     document.getElementById("div2").innerHTML = "B+"; 
     } 
     if(inputperc>73 && inputperc<76){ 
     document.getElementById("div2").innerHTML = "B"; 
     } 
     if(inputperc>70 && inputperc<72){ 
     document.getElementById("div2").innerHTML = "B-"; 
     } 
     if(inputperc>67 && inputperc<69){ 
     document.getElementById("div2").innerHTML = "C+"; 
     } 
     if(inputperc>63 && inputperc<66){ 
     document.getElementById("div2").innerHTML = "C"; 
     } 
     if(inputperc>50 && inputperc<62){ 
     document.getElementById("div2").innerHTML = "C-"; 
     } 
     if(inputperc>57 && inputperc<59){ 
     document.getElementById("div2").innerHTML = "D+"; 
     } 
     if(inputperc>53 && inputperc<56){ 
     document.getElementById("div2").innerHTML = "D"; 
     } 
     if(inputperc>50 v&& inputperc<52){ 
     document.getElementById("div2").innerHTML = "D-"; 
     } 
     if(inputperc>0 && inputperc<49){ 
     document.getElementById("div2").innerHTML = "f"; 
     } 
     } 
    } 

</script> 

回答

1

每当用户将文本输入到它被认为是一个string的输入栏。所以你需要将它转换为integerparseInt围绕您的提示是最简单的方法。 10只是说您正在使用0,1,2,3,4,5,6,7,8,9(base10)...而不是像0100100101(base2)那样。

var inputperc = parseInt(prompt("Enter a percentage"), 10); 
+0

答案不应该代码只... – Dozer789

+0

'parseInt'默认为广大的输入基部10。此外,字符串值将隐式转换为“Number”类型。不是说这些不是很好的建议,但它们并不妨碍他的代码工作。他的代码有语法错误。 –

1

小错误:

... 
    if(inputperc > 100 || inputperc < 0 || isNaN(inputperc)){ 
     document.getElementById("div2").innerHTML = "Enter a valid Percentage value between 0 and 100"; 
    } else { // <-- forgot to close the if. 
    if(inputperc >= 90 && inputperc <= 100){ 
... 

也已经提到它以inputperc转换成数与parseInt()一个好主意。因此,请确保最后删除额外的}

+0

我在“If”语句中放入了“else”语句,因此我关闭了“If”语句在“else”的右括号之后吃了代码的结尾。 Becaue我认为有可能把一个else语句放在一个If中。 –

+0

是的,但我们想关闭'if语句'然后添加'else'。你的'if语句'检查它是否无效,那么运行另一个'if语句'的唯一方法就是如果这个数字首先是无效的,这不是你想要的。除非先有另一个“if”,否则不能放置“else”和“if”。因为它会'if(..){...} else {...}' –

0

斯潘塞指出你的代码有语法错误。你应该考虑编写一个getGrade函数。

var getGrade = function (percent) { 
    if (percent > 100 || percent < 0 || isNaN(percent)) { 
     return "Enter a valid Percentage value between 0 and 100"; 
    } 
    if (percent >= 90 && percent <= 100) return "A+"; 
    if (percent > 90 && percent < 100)  return "A+"; 
    if (percent > 85 && percent < 89)  return "A"; 
    if (percent > 80 && percent < 84)  return "A-"; 
    if (percent > 77 && percent < 79)  return "B+"; 
    if (percent > 73 && percent < 76)  return "B"; 
    if (percent > 70 && percent < 72)  return "B-"; 
    if (percent > 67 && percent < 69)  return "C+"; 
    if (percent > 63 && percent < 66)  return "C"; 
    if (percent > 50 && percent < 62)  return "C-"; 
    if (percent > 57 && percent < 59)  return "D+"; 
    if (percent > 53 && percent < 56)  return "D"; 
    if (percent > 50 && percent < 52)  return "D-"; 
    if (percent > 0 && percent < 49)  return "F"; 
    return "Unknown Error" 
}; 

var el  = document.getElementById("div2"), 
    percent = prompt("Enter a percentage:"), 
    grade = getGrade(percent); 

el.innerHTML = grade;