parseFloat() returning NaN

parseFloat() returning NaN

本文关键字:NaN returning parseFloat      更新时间:2023-09-26

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>Bootstrap 101 Template</title>
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script type="text/javascript" src="jquery.min.js"></script>  
  </head>
  <body>
      
    <style>
        .form-control {
            margin-bottom: 15px;
        }
    </style>
      
    <nav class="navbar navbar-default">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">
            <h2 style="margin: 0px; padding: 0px;">Billing Calculator</h2>
          </a>
        </div>
      </div>
   </nav>
      
      <div class="col-md-2">
          <form class="navbar-form navbar-left" role="search">
              <div class="form-group">
                  <input type="date" class="form-control date" placeholder="Search">
                  <input type="date" class="form-control date" placeholder="Search">
                  <input type="date" class="form-control date" placeholder="Search">
                  <input type="date" class="form-control date" placeholder="Search">
                  <input type="date" class="form-control date" placeholder="Search">
                  <input type="date" class="form-control date" placeholder="Search">
                  <input type="date" class="form-control date" placeholder="Search">                  
              </div>
        </form>
     </div>
      
     <div class="col-md-3">
         <form class="navbar-form navbar-left" role="search">
             <div class="form-group">
                  <input type="text" class="form-control" id="one" placeholder="hours">
                  <input type="text" class="form-control" id="two" placeholder="hours">
                  <input type="text" class="form-control" id="three" placeholder="hours">
                  <input type="text" class="form-control" id="four" placeholder="hours">
                  <input type="text" class="form-control" id="five" placeholder="hours">
                  <input type="text" class="form-control" id="six" placeholder="hours">
                  <input type="text" class="form-control" id="seven" placeholder="hours">
                  <button type="submit" class="btn btn-default" id="click">Calculate</button>
             </div>
         </form>     
     </div>
     <div class="col-md-1">
        <form class="navbar-form navbar-left" role="search">
            <div class="form-group">
                <label for="form-control">Total Hours:</label>
                <label for="form-control" id="totalHours">.</label>
            </div> 
        </form> 
     </div>  
     <script type="text/javascript">
         
        var hoursOne = parseFloat(document.getElementById("one").value); 
         
        document.getElementById("click").onclick = function(){
            alert(hoursOne);    
        }
     </script>  
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

我试图从文本输入中检索一个数字,即使我使用innerHTML,它也总是提醒NaN。该程序是一个计费计算器,它计算工作小时数并返回总小时数。Date实际上与值没有太大关系,但可以帮助用户跟踪。

 <script type="text/javascript">             
    document.getElementById("click").onclick = function(){
        var hoursOne = parseFloat(document.getElementById("one").value);
        alert(hoursOne);    
    }
 </script>

您的代码在填写表单之前执行。您需要获取函数中的数据。

将混乱减少到最重要的程度,您就有了:

<form class="navbar-form navbar-left" role="search">
  <div class="form-group">
    <input type="text" class="form-control" id="one" placeholder="hours">
    <button type="submit" class="btn btn-default" id="click">Calculate</button>
  </div>
</form>
<script type="text/javascript">
  var hoursOne = parseFloat(document.getElementById("one").value); 
  document.getElementById("click").onclick = function(){
    alert(hoursOne);    
  }
</script>

因此,当页面加载时,您正在设置hoursOne的值,而不是将其重置为输入的当前值。因此,值为"(空字符串),parseFloat("")NaN。您需要做的是在单击按钮时获取值。

此外,为控件指定一个名称,使其能够成功,并指定一个默认值,使其仅在使用出错时返回NaN:

document.getElementById("click").onclick = function(){
  alert(parseFloat(parseFloat(this.form.hoursOne.value)));    
}
<form>
  <label for="one">Hours: 
    <input type="text" class="form-control" id="one" name="hoursOne" value="0">
  </label>
  <button type="button" id="click">parseFloat</button>
</form>

最后,您永远不应该使用占位符,而应该使用带有所需格式提示的适当标签。如果使用占位符作为标签,一旦用户输入了内容,他们就无法再看到标签,也不知道输入的目的是什么。