チェックボックスをオンにしてからそれらを一緒に追加すると入力される変数 – NaNの取得

jquery.calculationを使用してページ上の要素を追加しています。
私のjavascriptの最初の部分は、255の製品にこれらを追加します。

これはこれまでのところ私のJavaScriptです:

$(document).ready(function(){

$(".calcTotal").click(
function (){
   //get the sum of the elements
    var studio255_photocopier = $("#studio255_photocopier").sum();
    var sum_checkbox255 = $(".checkbox_sum255:checked").sum();
    var qty255 = $(".qty255").sum();
    var single_total255 = ((studio255_photocopier + sum_checkbox255) * qty255);

    if ($('.sorting_stapling255').is(':checked'))
    {
      var lease_sorting_stapling255 = "25.88";
    };

    if ($('.wake_up_fax255').is(':checked'))
    {
      var lease_wake_up_fax255 = "29.41";
    };

    if ($('.extra_2500_tray255').is(':checked'))
    {
      var lease_extra_2500_tray255 = "24.35";
    };

    var lease_single_total255 = ((lease_extra_2500_tray255 + lease_wake_up_fax255 + extra_2500_tray255) * qty255);

   //Grand total sum
    var grand_total = (single_total255);
    var lease_total = (lease_single_total255);
   //update the total
    $("#grand_total").text("£" + grand_total.toFixed(2));
    $("#lease_total").text("£" + lease_total.toFixed(2));
    }
);

});

また、これは私が使用しているhmtlです:

<div class="details options">
                    

Addtional Options functionality

choose your upgrades here:
                    <div class="clear"></div>
                    <form id="studio255">
                    <input class="sum255" type="hidden" id="studio255_photocopier" value="1538.24" />
                    
                    
                    
                    <div class="clear"></div>
                </div> <!-- details -->

                <div class="details amount">
                    
Specify the number of machines you require, the total price will be calculated automatically (displayed at the bottom of this page): <input id="btnClear" type="reset" value="clear" /> <input class="calcTotal" type="button" value="calculate" /> </form> <div class="clear"></div> </div> <!-- details -->
Your total cost is
Your total lease cost is

次のビットは、私が立ち往生している場所です。
彼らはリース価格も望んでいるので、関連するチェックボックスがチェックされたときにチェックして、別の変数を入力してから追加するだけでよいと思った。
しかし、何らかの理由でチェックボックスのいずれかがチェックされているが、複数のチェックがある場合にのみ動作します。複数のチェックがあると、リース合計でNaNが与えられます。

javascriptの一番下の部分は合計を加算した後、小数点以下2桁に制限します。

私は私のjavascriptは少し原油であると確信している、多分私は明らかに間違って何かをやっている。

ベストアンサー

PointedEarsが指摘しているように、ここで文字列を追加しています。 +
演算子は、文字列と数字の両方で動作します。方程式のどちらかの側が文字列の場合、2つの部分は連結され、両方が数字の場合は追加されます。

var str  = "3.3";
var num1 = 1.1;
var num2 = 1.2;

str + str;  //String: "3.33.3"
str + num1; //String: "3.31.1"
num1 + num2;//Number: 2.3

あなたの文字列に
“3.33.3”のようなものがあるので、あなたの文字列を乗算すると結果は数字に強制されます。これは無効な数字なので結果はNaNです

"3.33.3" * 2//NaN

その答えは、最初に数字で作業していることを確認することです。数値文字列を定義するすべての場所を実際の数値に変更します。

var lease_sorting_stapling255 = 25.88;

または、値がフォームから来ている場合は、それらを数値に解析する必要があります。このため、小数点以下桁数を使用するかどうかに応じて、
parseInt または parseFloat を使用できます。

parseFloat("25.88"); //25.88
parseInt("25.88", 10); //25

parseIntの第2引数は非常に重要です。これは数値の基底を定義するためです。それがなければ、数値は8進数または16進数として解析できます。

parseInt("007"); //7
parseInt("008"); //8
parseInt("009"); //9
parseInt("010"); //8 !!
parseInt("010", 10);//10

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です