我是JS的新手,我无法理解这件事..当我在第一个字段中输入任何数字时,下一个字段中没有任何内容出现,但代码必须正常工作..此代码中的错误是什么?
<html>
<head>
<title> Number methods </title>
</head>
<body>
<table border="2px" width="500px" height="400px" align="center">
<tr>
<td align="center" colspan="2">
<p> Enter a number </p>
</td>
<td align="center" colspan="2">
<input type="text" id="number">
</td>
</tr>
<tr>
<td align="center" colspan="2"> Result </td>
<td align="center" colspan="2"> <input type="text" id="result"> </td>
</tr>
<tr>
<td align="center"> <input type="button" onClick="string();" value="String"> </td>
<td align="center"> <input type="button" onClick="precision();" value="Precision"> </td>
<td align="center"> <input type="button" onClick="expo();" value="Exponential"> </td>
<td align="center"> <input type="button" onClick="fixed();" value="Fixed"> </td>
</tr>
</tr>
</table>
<script>
function fixed()
{
var num = document.getElementById("number").value;
var res = document.getElementById("result");
res.value = num.toFixed(2);
}
答案 0 :(得分:3)
字符串在其原型中没有名为.toFixed
的函数,
res.value = parseFloat(num).toFixed(2);
您必须将其转换为数字,以便您可以访问其功能.toFixed()
。由于您正在关注小数点,我建议您使用parseFloat
将该字符串转换为数字。
同样,您也可以使用parseInt(str)
,Number(str)
,+str
将字符串str
转换为数字。
答案 1 :(得分:1)
您的num
变量是一个字符串。 .toFixed()
只是数字对象上的方法,而不是字符串上的方法。
您必须先将num
转换为数字才能在其上调用.toFixed()
。以下是使用+
运算符转换为数字的代码的更正版本:
function fixed() {
// use the + here to convert to a number
var num = +document.getElementById("number").value;
var res = document.getElementById("result");
res.value = num.toFixed(2);
}
如果您学习在浏览器中查看调试控制台,它应该告诉您错误所在的代码行,并且非常清楚导致错误的原因。