switch语句可以在Function内部
Can switch statements be inside a Function?
我正试图编写一个程序,输入学生的平均值并返回:-a,如果学生的平均数为90-100-B如果学生的平均成绩是80-89-C如果学生的平均成绩是70-90-D如果学生的平均成绩是60-69-E如果学生的平均成绩为0-59-如果平均值不在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" );
这是您的代码在稍微修复时所做的:
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和<=100,你不需要检查函数内部的那些。第三,你不需要在脚本中指定上限,你可以像上面那样一个接一个地消除这些可能性。第四,你的名字和所有那些"myAvg"单词都有冲突。
以下是您所做操作的修改版本。我把它和你做的很接近,但这就是我分解零件的方式。为了实现这一点,您还需要在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();
希望这能有所帮助。
--是否
<script type= "javascript/text">
function averageGrade(myAvg)
{
if (myAvg >= 90)
{
return alert("Your average is an A");
}
else if (myAvg >=80)
{
return alert("Your average is an B");
}
else if (myAvg >=70)
{
return alert("Your average is an C");
}
else if (myAvg >=60)
{
return alert("Your average is an D");
}
else if (myAvg >=0)
{
return alert("Your average is an E");
}
}
var myAvg = prompt("Please enter your average",0);
averageGrade(myAvg)
</script>
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 直接在函数声明上使用function.prototype.bind
- jQuery:.click(function(){(element),collapse('show',f
- 调用函数内部的函数
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 在phonegap应用程序内部重定向不起作用
- 使用此选项选择父类内部的类
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- AngularJs指令,该指令创建内部有数据对象的新指令
- 如何使用内部对象构造对象
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- this内部的值返回this.each(function(){})
- 事件处理程序未在polymer ready:function()内部触发
- 在循环内部调用Function.prototype.call.apply
- switch语句可以在Function内部
- 如何从外部函数的$http-function内部返回值
- 窗口.Onresize = function {//code}似乎没有执行我的内部代码
- 绑定要在function构造函数内部使用的函数
- 在javascript对象内部,[Function](用方括号括起来)是什么意思