2011-03-23 11 views
0

は、私は次のコードを持っており、IEはフィットを投げないように、すべての数字を解析するすべてのものを試してみました:Math.ceilを計算することができませんIE8()

var firt_payment = 0.0; 
var subscription = 0.0; 
var no_policies = 0; 
var policy_cost = 100.0; 
if (typeof interval == "undefined") { 
    var interval = 0; 
} 
var days_left = daysLeftMonth(interval); 
var days_month = daysInMonth(); 

$("input[name^='policies']:checkbox").change(function() { 
    var el = $(this); 

    if (el.is(":checked")) { 
     no_policies++; 
    } 

    if (el.is(":not(:checked)")) { 
     no_policies--; 
    } 

    subscription = Number(no_policies*policy_cost); 

    var interim_val = 0.0; 
    if (no_policies > 0) { 
     interim_val = no_policies*(policy_cost/days_month)*days_left; 
    } 

    first_payment = Math.ceil(subscription+interim_val).toFixed(2); 

    $("td#first_payment").text("R "+first_payment); 
    $("input#first_payment_txt").val(first_payment); 
    $("td#subscription").text("R "+subscription.toFixed(2));  
}); 

誰のための答えを持っています私はなぜか

first_payment = Math.ceil(subscription+interim_val).toFixed(2); 

はIE8で計算されませんか?

私はここで絶望的です。

ありがとうございます。

+3

出力結果はどうなりますか?期待されるものは何ですか?他のどのブラウザで動作しますか? –

+0

Safariでは、毎回R126.00が出力されますが、IE8はすべての入力が数字であることを理解できません。 'first_payment = subscription + interim_val;'はIE8でもエラーを出します。私が得るエラーは: 'オブジェクトはこのプロパティやメソッドをサポートしていません' –

+0

'subscription'と' interim_val'の値はどうですか?おそらくそれらは両方の数字(または数字を含む文字列)ではありませんか? –

答えて

2

parseIntまたはparseFloatを代わりに使用し、結果をisNaNで確認してください。Numberを数値としてキャストすることは避けてください。さらに、daysLeftMonthまたはdaysInMonthの出力を検証していないし、days_leftの値にNaNの値が含まれていて、Math.ceil内で行われているsubscription+interim_valの操作が汚染されている可能性があります。

+0

Safariではこれが問題なく動作しますが、IE8では動作しません。警告(isNan(whateverVariable));問題の原因となっている値を指摘しますか? –

+0

Zikes、私は本当にこれにあなたの入力が必要です、私は永遠に感謝します。 –

+0

@AnriëtteCombrink私の目的のために正確な原因を突き止めるのは難しいですが、原因を突き止める最も簡単な方法は 'alert()'と 'typeof'です。値の1つが非数値で、 'parseFloat'でキャストする必要があるように見えます。 – Zikes

関連する問題