可以在函数内部切换语句吗?

时间:2015-11-07 01:12:35

标签: javascript function

我正在尝试编写一个输入学生平均值的程序并返回: - 如果学生的平均值是90-100 - 如果学生的平均分为80-89,则为B. - 如果学生的平均分数是70-90,则为C. - 如果学生的平均分为60-69,则为D. - 如果学生的平均分数是0-59,则为E. - 如果平均值不在0到100之间,则显示"无效输入"。

首先,应该要求用户输入学生的平均值,验证平均值(=值应该在1 -100之间),然后: - 如果有效,调用函数确定并返回A,B ,C,D或E取决于平均值。 - 如果平均值无效或用户按下取消按钮,则显示警告消息并退出程序。

到目前为止,这是我的代码:

var myAvg = prompt("Please enter your grade percentage",0) 

if ( isNaN(myAvg) || myAvg < 1 || myAvg > 100 ) { 
    alert("Average must be a percentage value. Please re-enter your grade again."); 
}

function myAvg (gradeA,gradeB,gradeC,gradeD,gradeE) { 

  switch (true) {

    case (myAvg >= 90 && myAvg < 100):
         document.write("Your grade is an myAvg<br />" );
         document.write(gradeA + " " );
         break;

    case (myAvg >= 80 && myAvg < 89):
         document.write("Your grade is an myAvg<br />" );
         break;

    case (myAvg >= 70 && myAvg < 79):
        document.write("Your grade is an myAvg<br />" );
        break;

    case (myAvg >= 60 && myAvg < 69):
        document.write("Your grade is an myAvg<br />" );
        break;

    case (myAvg >= 0 && myAvg < 59):
        document.write("Your grade is an myAvg<br />" );
        break;

    default: document.write("Please enter a valid percentage<br />");

  }
}

myAvg("gradeA", "B", "C", "D", "E" );

3 个答案:

答案 0 :(得分:0)

这是你的代码在修改一下后所做的事情:

function myAvg (average, gradeA,gradeB,gradeC,gradeD,gradeE) { switch (true) {
   document.write("Your grade is an average<br />" );
   if (average >= 90){
      document.write(gradeA + " " );
   } else if  (average >= 80){
      document.write(gradeB + " " );
   } else if  (average >= 70){
      document.write(gradeC + " " );
   } else if  (average >= 60){
      document.write(gradeD + " " );
   } else {
      document.write(gradeE + " " );
   }
}

var average = prompt("Please enter your grade percentage",0)
if ( isNaN(average) || average < 0 || average > 100 ) { 
  alert("Average must be a percentage value. Please re-enter your grade again."); 
} else {
  myAvg(average, "A", "B", "C", "D", "E" );
}

你可以在函数内部使用switch语句,是的,但你没有正确使用它。在Javascript中(与Perl,Ruby或者Python不同),你不能把条件放在这样的开关/案例中。这是if / else if的任务。其次,由于您已经确定平均值为> = 0且&lt; = 100,因此您无需检查函数内部的那些。第三,您不需要在脚本中指定上限,您可以像上面一样逐个消除可能性。第四,你的名字与所有那些“myAvg”的词都有冲突。

答案 1 :(得分:0)

这是您正在做的修改版本。我保持它与你正在做的非常接近,但这就是我打破部件的方式。为了使这个工作,你还需要在html中添加一个div(我不喜欢使用“document.write”):

<div id="message"></div>

但是,如果您愿意,可以替换该部分。有更好的方法可以与其他库一起完成这些部分,但这可以帮助你。

    function getGrade(score, grades) {
        grades = grades || [
            {
                min: 90,
                grade: 'A'
            },
            {
                min: 80,
                grade: 'B'
            },
            {
                min: 70,
                grade: 'C'
            },
            {
                min: 60,
                grade: 'D'
            },
            {
                min: 0,
                grade: 'F'
            }
       ];
        for (var i in grades.length) {
            if (score >= grades[i].min) return grades[i].grade;
        }
        return;
    }

    function showGrade(score) {
        var grade = getGrade(score);
        document.getElementById('message').innerHTML = "Your grade is: " + grade;
    }

    function getScore() {
        var score = prompt("Please enter your grade percentage", 0);
        if (isNaN(score) || score < 0) {
            alert("Average must be a percentage value. Please re-enter your grade percentage.");
            getScore();
        } else {
            showGrade(score);
        }
    }
    getScore();

希望这有帮助。

- 威尔

答案 2 :(得分:0)

function vote(){}