2014-01-25 197 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;