2013-06-29 99 views
1

,請在循環中保持提示循環我正在製作一個程序,讓教師輸入一個學生的姓名和相應於一定數量的作業(教師指定作業)的成績。如果條件爲

我想使它成爲輸入等級的數字值。所以,我已經添加以下代碼:

for (var g = 1; g <= assignments; g++) { 
    var grade = prompt("Please enter the student score for assignment" + g + "."); 
    if(typeof grade === 'number' && Math.Round(grade) % 1 == 0) { 
      return true; 
     } 
    else{ 
      var grade = prompt("Please enter the student score for assignment" + g + "."); 

     } 

     var gradecolumn = document.createElement("td"); 
     var gradetext = document.createTextNode(grade); 
     gradecolumn.appendChild(gradetext); 
     rowtwo.appendChild(gradecolumn); 
    } 

我下來......但我想使它所以它會繼續提示,直到用戶輸入一個有效的數據類型。

我已經是我想要的成績相加他們已經進入後並計算累計成績來分配某些分級標準字母等級的另一個問題......我知道我要去分配通過多條件if/else if語句對字母進行評分。但是我不知道如何在輸入成績後調用成績,以及如何將成績添加到一起,以便將結果輸入到多部分條目中。

任何幫助將不勝感激..此外,我應該使用parseInt的任何這個?

+0

東西(任意整數)模1始終爲0 – akonsu

+0

扔提示進入一個while循環,雖然你的條件都是假的,再次提示。 –

+0

或許if(parseInt(grade))...而不是if(typeof grade ==='number'&& Math.Round(grade)%1 == 0)可以完成這項工作 – vladkras

回答

1
var range = {"A": 100, "B": 75, "C": 50, "D": 30, "E": 20, "F": 10}, score = 0; 
for (var g = 1; g <= 3; g++) { 
    var grade = undefined, letter = ''; 
    while (!grade) { 
     var grade = prompt("Please enter the student score for assignment" + g + "."); 
     if (parseInt(grade)) { 
      // accumulate score 
      score += parseInt(grade); 
     } 
     // grade is not a number 
     else grade = undefined; 
    } 
} 
// check for mark 
for (key in range) { 
    if (score<range[key]) letter = key; 
} 

if (!letter) alert("score "+score+" is out of range!"); 
else { 
    alert(letter); // now you have it 
} 

演示也更新:http://jsfiddle.net/vladkras/jNg2m/2/

+1

也許你並不是想要創建一個全局變量在第二行 – akonsu

+0

當然,我現在編輯它,tankank – vladkras

+0

我想累積...所以如果老師說有6個任務,他/她輸入6個不同的值。最後,我想將所有這些值平均,然後分配一個字母。 – Ktown

0

試試這個:

var g = 1; 
var assignments = 5; 
var done = false; 
var grade, gradecolumn, gradetext; 

while (!done) 
{ 
    grade = prompt("Please enter the student score for assignment " + g + "."); 
    if((grade+'').search(/^[0-9]{1,3}$/) > -1) 
    { 
     gradecolumn = document.createElement("td"); 
     gradetext = document.createTextNode(grade); 
     gradecolumn.appendChild(gradetext); 
     rowtwo.appendChild(gradecolumn); 

     // increment the counter 
     g++; 
     if (g > assignments) 
     { 
      done = true; 
     } 
    } 
    else 
    { 
     alert('Please enter a valid score for assignment '+g+'.'); 
    } 
}