如果条件为false,则在循环中保持提示

Keep prompting in loop on false if condition

本文关键字:循环 提示 条件 false 如果      更新时间:2023-09-26

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

我想让它成为一个数值,为输入的成绩。所以,我添加了这个代码:

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来处理这些问题吗?

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/

试试这个:

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+'.');
    }
}