学生平均值 - JavaScript中没有回复

时间:2013-08-25 18:13:27

标签: javascript error-handling

此代码假设接受来自用户的4个主题标记并计算总计和平均值。 它应该显示在文本框中。

当我点击Calculate(按钮)时,它应该生成一个警告对话框和一些计算,但事实并非如此。 它的错误是什么?怎么了? 我只是无法弄清楚这个代码中有什么问题。对我来说一切都很好!!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy for Linux (vers 25 March 2009), see www.w3.org" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ass_3 q_6</title>

<script type="text/javascript" language="javascript">
        function average()
        {
            alert("Hay");
            var s1=document.getElementById("math").value;
            var s2=document.getElementById("phy").value; 
            var s3=document.getElementById("che").value; 
            var s4=document.getElementById("bio").value; 
            var total=document.getElementById("tot"); 
            var ave=document.getElementById("avg");

            tot.value= (s1+s2+s3+s4);
            avg.value=(tot.value)/4;

        }

</script>

</head>
<body>
<h2 class="c1">Student Marks Average</h2>
<form name="myMarks" method="post" action="" id="myMarks">
<table align="middle" border="1">
<tr><td>Subjects</td><td>Marks Out of 100</td></tr>
<tr>
<td width="90px">Maths:</td>
<td><input type="text" id="math" name="maths" size="14" /></td>
</tr>
<tr>
<td>Physics:</td>
<td><input type="text" id="phy" name="physics" size="14" /></td>
</tr>
<tr>
<td>Chemistry:</td>
<td><input type="text" id="che" name="chemistry" size="14" /></td>
</tr>
<tr>
<td>Biology:</td>
<td><input type="text" id="bio" name="biology" size="14" /></td>
</tr>
<tr>
<td colspan="2" align="middle"><input type="button" value="Calculate" onclick="average()" /></td>
</tr>
<tr class="c2">
<td>Total:</td>
<td><input type="text" id="tot" name="total" size="14" /></td>
</tr>
<tr class="c3">
<td>Average:</td>
<td><input type="text" id="avg" name="average" size="14" /></td>
</tr>
</table>
</form>
</body>
</html>

4 个答案:

答案 0 :(得分:6)

首先,我强烈建议使用一些东西进行调试。我非常喜欢谷歌浏览器中的Javascript控制台。出现的错误是您的“平均”类型不是函数。

由此可以看出,您可能有多个事物被定义为“平均”。实际上,您的输入类型也被命名为“average”。

只需更改功能名称或输入类型名称即可完美运行!

例如,我改为

onclick="average_calc()"

的功能
function average_calc()

......它运作良好。

(“罚款”只表示你在文本框中输入了值...你还没有添加它们,你正在连接它们,而你直接选择“tot”...所以还是一些问题,但这应该会让你走上正轨)

答案 1 :(得分:1)

问题在于以下几行:

        var total=document.getElementById("tot"); 
        var ave=document.getElementById("avg");

        tot.value= (s1+s2+s3+s4);
        avg.value=(tot.value)/4;

它们导致您的脚本停止运行,因为未定义totavg。相反,您有totalave。让它们匹配,它应该运行。

编辑:正如AndyMac指出的那样,另一个问题在于该函数与您的一个输入具有相同的名称。此外,您的变量将在输入中包含数字的字符串值,因此您的输出将不是您所期望的。要解决此问题,请使用parseInt获取整数类型。

function calc_average()
{
    alert("Hay");
    var s1 = parseInt(document.getElementById("math").value);
    var s2 = parseInt(document.getElementById("phy").value);
    var s3 = parseInt(document.getElementById("che").value);
    var s4 = parseInt(document.getElementById("bio").value);
    var tot = document.getElementById("tot");
    var avg = document.getElementById("avg");

    tot.value = s1 + s2 + s3 + s4;
    avg.value = tot.value / 4;
}

答案 2 :(得分:1)

the problem in function name and some code please try this function

<script type="text/javascript" language="javascript">
function get_average()
{
alert("Hay");
var s1=parseInt(document.getElementById("math").value);
var s2=parseInt(document.getElementById("phy").value); 
var s3=parseInt(document.getElementById("che").value); 
var s4=parseInt(document.getElementById("bio").value); 
var total=document.getElementById("tot"); 
var ave=document.getElementById("avg");

tot.value= s1+s2+s3+s4;
avg.value=(tot.value)/4;

}

</script>

答案 3 :(得分:0)

您的函数缺少return语句。如果你在它的末尾放了一个“return avg.value”,那么你可以在调用函数后在别处显示它。