[英]Javascript User input Average GPA calculator
我正在尝试借助javascript开发用户输入gpa计算器。 逻辑是,用户只能输入A,B,C,D,F值。 然后它将弹出计算平均结果。 如果结果为3.50或更高,则恭喜您弹出平均结果,否则对不起平均结果。
我试图从2天开始解决它。 但是没有运气。 你能给我任何解决的提示吗? 如果输入值,则显示NaN,但如果保持空白,则显示0。
JSFiddle: https ://jsfiddle.net/jL8p1g80/
<!DOCTYPE html>
<html>
<head>
<title>GPA Calculation </title>
</head>
<body>
<!-- Calculator html design start from here -->
<hr>
<br>
<h2>GPA Calculation</h2>
<h3>Here use GPA Scale: A = 4; B = 3; C = 2; D = 1; F = 0</h3>
<br>
<CENTER>
<!-- This is html form -->
<FORM Name="GPACalcForm">
<TABLE BORDER=5 BGCOLOR=#C0C0C0 CELLPADDING="5"
CELLSPACING="2">
<TH></TH>
<TH>Grade</TH>
<TR>
<TD>Class 1</TD>
<TD><INPUT TYPE=TEXT SIZE=5 NAME="GR1" ALIGN=TOP
MAXLENGTH=5></TD>
</TR>
<TR>
<TD>Class 2</TD>
<TD><INPUT TYPE=TEXT SIZE=5 NAME="GR2" ALIGN=TOP
MAXLENGTH=5></TD>
</TR>
<TR>
<TD>Class 3</TD>
<TD><INPUT TYPE=TEXT SIZE=5 NAME="GR3" ALIGN=TOP
MAXLENGTH=5></TD>
</TR>
<TR>
<TD>Class 4</TD>
<TD><INPUT TYPE=TEXT SIZE=5 NAME="GR4" ALIGN=TOP
MAXLENGTH=5></TD>
</TR>
<TR ALIGN=CENTER>
<TD COLSPAN=3><INPUT TYPE="BUTTON" VALUE="Calculate"
NAME="CalcButton"
OnClick="gpacalc()"></TD>
</TR>
</TABLE>
</FORM>
<BR>
<P>
<P>
</CENTER>
<BR>
<script type="text/javascript">
function gpacalc()
{
//define valid grades and their values
var gr = new Array(5);
var cr = new Array(5);
var ingr = new Array(3);
// define valid grades and their values
var grcount = 5;
gr[0] = "A";
cr[0] = 4;
gr[1] = "B";
cr[1] = 3;
gr[2] = "C";
cr[2] = 2;
gr[3] = "D";
cr[3] = 1;
gr[4] = "F";
cr[4] = 0;
// retrieve user input
ingr[0] = document.GPACalcForm.GR1.value;
ingr[1] = document.GPACalcForm.GR2.value;
ingr[2] = document.GPACalcForm.GR3.value;
ingr[3] = document.GPACalcForm.GR4.value;
// Calculate GPA
var allgr =0;
var gpa = 0;
for (var x = 0; x < 4; x++)
{
if (ingr[x] == "") break; // if empty value then stop
var validgrcheck = 0;
for (var xx = 0; xx < grcount; xx++)
{
if (ingr[x] == gr[xx])
{
allgr = allgr + (parseInt(ingr[x],10));
validgrcheck = 1;
break;
}
}
if (validgrcheck == 0)
{
alert("Error- Please use standard college grades in the form of A B C D F.");
return 0;
}
}
gpa = allgr;
if(eval(gpa) >=3.50) {
alert("CONGRATULATION! your GPA = " + eval(gpa));
return 0;
}
else {
alert("Thanks for try your GPA = " + eval(gpa));
return 0;
}
}
</SCRIPT>
</div>
<div class="footer">
</div>
</body>
</html>
您的问题在这一行(parseInt(ingr[x],10))
。 在这里,您尝试将字符('A','B'等)解析为整数,结果为NaN
。 试一试
allgr = allgr + (cr[x],10);
计算GPA。
顺便说一句,我看不到计算平均值的逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.