Javascript:函数未定义错误消息
我有这个简单的示例代码,3个文本框。如果我把数字写在前两个,它会把它们相乘,然后把结果写在第三个。但是,如果我运行代码,我会得到一个错误:“ReferenceError:calc未定义”。我错过什么了吗Javascript:函数未定义错误消息,javascript,html,Javascript,Html,我有这个简单的示例代码,3个文本框。如果我把数字写在前两个,它会把它们相乘,然后把结果写在第三个。但是,如果我运行代码,我会得到一个错误:“ReferenceError:calc未定义”。我错过什么了吗 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script language="text/javascript">
<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>
函数计算()
{
var txt1=(float)document.getElementById('text1').value;
var txt2=(float)document.getElementById('text2').value;
document.getElementById('text3')。值=(txt1*txt2);
}
更新:不管是谁写的“(浮动)”导致了问题,他是对的。谢谢你的帮助。1)试试换衣服
<script language="text/javascript">
<script language="text/javascript">
此外,正如其他人已经指出的,要从字符串中获取浮点值,可以使用parseFloat
并将字符串作为参数传递。使用(float)
通常在Java中用于将数值类型(如double
或int
转换为float
)
2) 试着改变
var txt1 = (float) document.getElementById('text1').value;
var txt2 = (float) document.getElementById('text2').value;
到
使用此行
尝试使用parseFloat
转换为float
function calc()
{
var txt1 = parseFloat(document.getElementById('text1').value);
var txt2 = parseFloat(document.getElementById('text2').value);
document.getElementById('text3').value = (txt1 * txt2);
}
出现该错误的原因是您在其中定义的函数无效,因此未加载该函数。问题在于(float)-在JavaScript中不能像那样进行类型转换 按如下方式使用parseFloat()函数:
var txt1 = parseFloat(document.getElementById('text1').value);
<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>
请注意,Rajesh也是正确的,因为您需要进行更改
到
完整、正确的脚本如下所示:
var txt1 = parseFloat(document.getElementById('text1').value);
<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>
函数计算()
{
var txt1=parseFloat(document.getElementById('text1').value);
var txt2=parseFloat(document.getElementById('text2').value);
document.getElementById('text3')。值=(txt1*txt2);
}
I是导致问题的(浮动)类型。使用parseFloat()
而不是(浮动)
试试这个
函数计算()
{
var txt1=document.getElementById('text1');
var txt2=document.getElementById('text2');
document.getElementById('text3').value=(parseFloat(txt1.value)*parseFloat(txt2.value));
}
这没有帮助,language属性已被弃用。有用的信息,但实际上无法解决问题。@Peter Herdenborg更新了答案。好的,这会导致什么和如何?还有如何解决?你看到问题中的更新注释了吗?所以愚蠢的否决票太多了。。。
<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>
<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>