2016-09-30 21 views
-6

私はユーザーにいくつかのフィールドを入力させたいフォームを用意しており、フォームは目標の合計とパーセンテージを計算します。私はJavaScriptが初めてのので、パーセンテージを計算する方法はわかりません。私はparseInt(total)/parseInt(goal)*100をしようとすると、私はNaNにエラーが出ます:JavaScriptでパーセンテージを計算する

<html> 
    <head> 
    <style media="screen"> 
     .testform INPUT { 
      display: block; 
      margin-bottom: 10px; 
      border: 1px solid #212121; 
      height: 35px; 
      font-size: 16px; 
     } 
    </style> 
    <script type="text/javascript"> 
     calculate = function() { 
      var cash = document.getElementById('a1').value; 
      var checks = document.getElementById('a2').value; 
      var coin = document.getElementById('a3').value; 
      var goal = document.getElementById('goalamount').value; 
      var total = document.getElementById('a4').value; 

      document.getElementById('a4').value = parseInt(cash)+parseInt(checks)+parseInt(coin); 
      document.getElementById('a5').value = parseInt(total)+parseInt(goal); 
     } 
    </script> 
    </head> 
    <body> 
    <form class="testform"> 
     Goal amount <input id="goalamount" type="text" value="3000"/> 
     Cash Collected <input id="a1" type="text" /> 
     Checks Collected <input id="a2" type="text" /> 
     Coins Collected <input id="a3" type="text" /> 
     Total Collected <input id="a4" type="text" name="total_amt" onblur="calculate()" /> 
     Percent of Goal<input id="a5" type="text" name="goal_amt" /> 
    </form> 
    </body> 
</html> 
+3

ジャワ= JavaScriptの – shmosel

+0

あなた 'total_amt'と' goal_amt'入力フィールドが変更 'タイプに=! "text"を 'type =" number "'に変更します。これにより、これらのフィールドに数字だけが入力されます。 –

+0

どの時点でパーセンテージを計算しようとしていますか?あなたのコードに 'parseInt(total)/ parseInt(goal)* 100'をどこに入れますか?私が推測するのは、ある時点でparseInt( "")を試しているために、NaNを取得しているということです。これは、あなたが言及した入力のいずれかに値がないか、数値ではないことを示します。 –

答えて

1

ローカルのenvでコードを実行して、なぜNaN例外がスローされたのか分かりました。変数totalは、上記のコードに従ってhtml入力要素の値から取得されますが、実行される行parseInt(cash)+parseInt(checks)+parseInt(coin);の前には、合計変数は空の文字列になります。その後、parseIntは空の文字列を解析した後にNaNをintに返します。入力ボックスにNaNが表示されます。

この問題を解決するためのソリューションがあります:コード以下の通り:

var goal = document.getElementById('goalamount').value; 

document.getElementById('a4').value = parseInt(cash)+parseInt(checks)+parseInt(coin); 

var total = document.getElementById('a4').value; 

...

1

NaNは "数字ではない" を意味します。合計が整数として解析できるかどうかをチェックし、目標が整数として解析され、値がゼロでないかどうかを確認してください。

関連する問題