2016-05-08 113 views
2

parseFloat()返回NaN的

<!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>

我正在嘗試從一個文本輸入一個數字,它總是提醒NaN甚至當我使用innerHTML。該計劃旨在成爲一個計費計算器,可以計算工作小時數並返回總小時數。日期與價值沒有多大關係,但可以幫助用戶保持跟蹤。

+2

顯示html代碼也 –

+0

也許導致解析值應該是像3.14不是3,14 –

回答

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

您的代碼在填寫表單前被執行。你需要在你的函數中獲取數據。

+0

明白了,非常感謝你! – okunato

+0

不客氣! – mhyst

0

減少雜波,只是有什麼事情,你必須:

<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。你需要做的是獲得點擊按鈕時的值。

另外,給該控件的名稱,以便它能夠成功,和一個默認值,這樣,如果使用犯了錯誤也只會返回楠:

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>

最後,你不應該使用佔位符,而是使用一個適當的標籤,並在必要的格式上提示。如果您使用佔位符作爲標籤,則一旦用戶輸入了內容,他們將無法再看到標籤,並且不知道輸入是什麼。

+0

那麼解決方案是什麼? – okunato