JS编号方法不起作用

时间:2016-03-28 16:08:04

标签: javascript

我是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);

     }

  

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);
}

如果您学习在浏览器中查看调试控制台,它应该告诉您错误所在的代码行,并且非常清楚导致错误的原因。