2017-12-19 11 views
-1

私はそれぞれの合計と課金を加算する機能を持っています。しかし、私はsum + chargeに警告し、私はNaNを取得します。なぜこうなった?数字ではありません - JavaScript

<script> 
     sum = 0; 
     charge = 0; 

$('.panel').append(
     '<div class="container" style=" font-size:14px; "> '+ 

     '<table style="width:100%;" class="table" id="tables">'+ 


'<td class="name" >'+std.name+'</td>'+ 
'<td><p class="total" ><span class="min-total" name="total" id="total"></span></p></td>'+ 
'</table>'+ 
'</div>' 

    $('.panel').on('keyup','.quantity',function() 

     container = $(this).closest('div'); 

     quantity = Number($(this).val()); 
     price = Number($(this).closest('div').find('.price').data('price'));   
     container.find(".min-total span").text(quantity * price); 

     sum = 0; 

      $(".sum-total").each(function(){ 
      sum = sum + Number($(this).text()); 
      }) 
    } 

     $('.charge').on('keyup','.charge',function(){ 
       $('.charge span').text(Number($(this).val())); 
       charge = Number($(this).val()); 

     alert(sum + charge); 


     </script> 
+4

問題を再現するために完全なコードを追加してください –

+0

おそらく、 'Number()'はテキスト値を数値に変換していない可能性があります。しかし、より包括的な例がないと、どこで言い表すことは不可能です。これが発生した場合、値をゼロに設定するために、すべてのポイントで['isNaN()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN)テストを追加できます。 – Blazemonger

+0

フィールドの一方または両方には数値ではないものが含まれており、 'Number'で数値に変換することはできません。あなたはそれを修正するか、数値以外のすべてを置き換える前に、その上に 'Number'を呼び出します。考えられる原因は、あなたのフィールドにカンマを使用することです。 –

答えて

-1

Wikipediaの定義は言う:計算に

、NaNは、数ではなく放置、未定義または表現できない値を表す数値データ型 値です。あなたのコードでhttps://en.wikipedia.org/wiki/NaN

いずれか$(this).text()$(this).val()は、番号()によって計算し、NaNを返すことはできません。それらの値が数値か数値で構成された文字列のいずれかであることを確認してください。

+2

はい、それは本当に 'NaN'がどこから来ているのかを説明していません。より多くのコードがなければ、誰も正確な答えを提供することはできません。 –

+0

質問は "なぜこれが起こっているのですか?" –

+1

そして、十分な情報がないので、確かに知る方法がありません。 –

関連する問題