如果条件,继续循环提示false

时间:2013-06-29 03:06:55

标签: javascript

我正在制作一个程序,教师输入学生的姓名和与一定数量的作业相对应的成绩(教师指定作业)。

我想这样做,它必须是输入成绩的数字值。所以,我添加了这段代码:

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吗?

2 个答案:

答案 0 :(得分: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 :(得分: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+'.');
    }
}