1

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

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

<!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

4 回答 4

6

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

从中,您可以看到,也许您将不止一件事定义为“平均”。事实上,您的输入类型也被命名为“平均”。

只需更改函数的名称或输入类型的名称,它就可以完美运行!

例如,我改为

onclick="average_calc()"

和功能

function average_calc()

...而且效果很好。

(“很好”仅表示您在文本框中获得了值……您还没有添加它们,而是将它们连接起来,并且您直接选择了“tot”……所以仍然存在一些问题,但是这应该会让你走上这条路)

于 2013-08-25T18:23:09.460 回答
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;
}
于 2013-08-25T18:18:57.687 回答
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>
于 2013-08-25T18:36:41.820 回答
0

您的函数缺少 return 语句。如果你在它的末尾加上一个“return avg.value”,那么你可以在调用函数后在其他地方显示它。

于 2013-08-25T18:18:11.100 回答