Javascript:函数未定义错误消息

时间:2015-04-13 09:20:58

标签: javascript html

我有这个简单的示例代码,3个文本框。如果我在前两个中写入数字,它会将它们相乘并将结果写入第三个数字。但是,如果我运行代码,我会收到一条错误消息:“ReferenceError:calc未定义”。我错过了什么吗?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script language="text/javascript">
    function calc()
    {
        var txt1 = (float) document.getElementById('text1').value;
        var txt2 = (float) document.getElementById('text2').value;
        document.getElementById('text3').value = (txt1 * txt2);
    }
 </script>
</head>
<body>
    <table>
        <tr>
            <td><input type="text" id="text1" name="text1"></td>
            <td><input type="text" id="text2" name="text2" onkeypress="calc();"></td>
            <td><input type="text" id="text3" name="text3"></td>
       </tr>
   </table>
</body>
</html>

更新:谁写了“(浮动)”导致问题,是对的。谢谢你的帮助。

7 个答案:

答案 0 :(得分:4)

尝试使用parseFloat强制转换为浮动

function calc()
{
    var txt1 = parseFloat(document.getElementById('text1').value);
    var txt2 = parseFloat(document.getElementById('text2').value);
    document.getElementById('text3').value = (txt1 * txt2);
}

答案 1 :(得分:1)

您收到该错误的原因是您在此处定义的函数无效,因此未加载。问题在于(浮动) - 你不能像在JavaScript中那样进行类型转换。

使用parseFloat()函数,如下所示:

var txt1 = parseFloat(document.getElementById('text1').value);

请注意,Rajesh也是正确的,因为您需要更改

<script language="text/javascript">

<script type="text/javascript">

完整,正确的脚本如下:

<script type="text/javascript">
    function calc()
    {
        var txt1 = parseFloat(document.getElementById('text1').value);
        var txt2 = parseFloat(document.getElementById('text2').value);
        document.getElementById('text3').value = (txt1 * txt2);
    }
 </script>

答案 2 :(得分:0)

1)尝试更改

<script language="text/javascript">

<script type="text/javascript">

如果您想使用已弃用的 language属性,则可以执行以下操作:

<script language="Javascript">

此外,正如其他人已经指出的那样,要从字符串中获取浮点数,您可以使用parseFloat并将字符串作为参数传递。使用(float)通常用于 Java ,以便将数字类型(例如doubleint)转换为float

2)尝试更改

var txt1 = (float) document.getElementById('text1').value;
var txt2 = (float) document.getElementById('text2').value;

var txt1 = parseFloat(document.getElementById('text1').value;
var txt2 = parseFloat(document.getElementById('text2').value;

答案 3 :(得分:0)

使用parseFloat()代替(float)

答案 4 :(得分:-1)

试试这个Demo

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <script type="text/JavaScript">
    function calc()
    {
        var txt1 = document.getElementById('text1');
        var txt2 = document.getElementById('text2');
        document.getElementById('text3').value = (parseFloat(txt1.value) * parseFloat(txt2.value));
    }
 </script>
</head>
<body>
    <table>
        <tr>
            <td><input type="text" id="text1" name="text1" value=""></td>
            <td><input type="text" id="text2" name="text2"   value=""></td>
            <td><input type="text" id="text3" name="text3" onkeypress="calc()" value=""></td>
       </tr>
   </table>     
</body>    
</html>

答案 5 :(得分:-2)

使用此行<script language="javascript" type="text/javascript">

答案 6 :(得分:-2)

我是导致问题的(浮动)投射。