2016-05-08 3 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に警告します。プログラムは、作業時間と総時間を返す請求計算機であることを意味します。日付は実際に値とはあまり関係がありませんが、ユーザーの追跡を助けます。

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

最後に、:使用が間違いをした場合、それだけではNaNを返すように

はまた、名前はそれが成功することができるように制御し、デフォルト値を与えます必要な書式のヒントとともに適切なラベルの代わりにプレースホルダーを使用しないでください。ラベルとしてプレースホルダを使用すると、ユーザーが何かを入力すると、ラベルが表示されなくなり、入力が何のためであるかわからなくなります。

+0

だから解決策は何ですか? – okunato

関連する問題