繁体   English   中英

Javascript用户输入平均GPA计算器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM