2011-01-26 10 views
2

このコードは、コンテナの公開と非表示の機能で完全に機能しますが、計算によってNaNが生成されます。私はJQueryで数学を試したことがありませんでした。NaNの結果を生成するJQueryの計算

function product_analysis_global() { 
$(':checked').each(function(){ 
    $('#product_' + this.alt).css('display','block'); 
    $('#product_quantity_PRI_' + this.alt).val(this.value); 
    var quantity = $('#product_quantity_PRI_' + this.alt).val; 
    var price = $('#product_price_PRI_' + this.alt).val; 
    var duration = $('#product_duration_PRI_' + this.alt).val; 
    var dives = $('#product_dives_PRI_' + this.alt).val; 
    var hire = $('#product_quantity_PRI_' + this.alt).val; 

    $('#product_price_total_PRI_' + this.alt).val(price * quantity); 
    $('#product_duration_total_PRI_' + this.alt).val(duration * quantity); 
    $('#product_dives_total_PRI_' + this.alt).val(dives * quantity); 
    $('#product_hire_total_PRI_' + this.alt).val(hire * quantity); 
}); 
    $(':not(:checked)').each(function(){ 
     $('#product_' + this.alt).css('display','none'); 
     $('#product_quantity_PRI_' + this.alt).val('0'); 
     var quantity = $('#product_quantity_PRI_' + this.alt).val; 
     var price = $('#product_price_PRI_' + this.alt).val; 
     var duration = $('#product_duration_PRI_' + this.alt).val; 
     var dives = $('#product_dives_PRI_' + this.alt).val; 
     var hire = $('#product_quantity_PRI_' + this.alt).val; 

    $('#product_price_total_PRI_' + this.alt).val(price * quantity); 
    $('#product_duration_total_PRI_' + this.alt).val(duration * quantity); 
    $('#product_dives_total_PRI_' + this.alt).val(dives * quantity); 
    $('#product_hire_total_PRI_' + this.alt).val(hire * quantity); 

}); (括弧なし) }

マーベラス

+0

.valの(.valするsuppost .valではありませんか)?または私は私の脳には錆びています。 – raRaRa

答えて

5

あなたのすべての.val sがそれらの後に括弧が必要になります()。それ以外の場合は、関数が返す実際の値ではなくval関数が得られます。

など。

var quantity = $('#product_quantity_PRI_' + this.alt).val(); // brackets 

また、文字列を返す、.val()注意してください。あなたのシナリオでは、ここではエラーはありません。なぜならあなたは乗算を行うだけなので、文字列は自動的に数値に変換されます。しかし、追加した場合、文字列はに連結され、'1' + '1' = '11'となります。これを防ぐ(でもあなたの例では安全である)には、数値に文字列を変換するために.val()からの戻り値の前にある単一のプラス記号を置く:

var quantity = +$('#product_quantity_PRI_' + this.alt).val(); 
0

あなたはおそらく、文字列での計算に。疑問がある場合は、xが数字の場合:

parseInt(x) 

確かに数字です。

関連する問題