2014-01-27 65 views
1

所以我試圖讓兩個輸入字段計算出它們的值。這是我到目前爲止的代碼:Javascript計算返回錯誤的數字

function strToNumber (str) { 
    return Number(str.replace(/\D/g,'')); 
} 

var number_2_calc; 
var number_1 = strToNumber($("#number_1").val()); 
var number_2 = strToNumber($("#number_2").val()); 

$("#number_2").focusout(function(){ 
    if(number_2 == 0) { 
     $("#number_2").val(""); 
    } else { 
     number_2_calc = number_2 +(number_1 * 0.1); 
     $("#number_2").val(number_2_calc); 
    } 
}); 

$("#number_1").focusout(function() { 
    if(number_2 == 0) { 
     $("#number_2").val(""); 
    } else { 
     //not sure if necessary to create seperate vars here 
     var number_2_stored = strToNumber($("#number_1").val()); 
     var number_1_stored =strToNumber($("#number_2").val()); 

     number_2_calc = 0; 

     number_2_calc = number_2_stored +(number_1_stored * 0.1); 
     Math.round(number_2_calc).toFixed(2); 
     $("#number_2").val(number_2_calc); 
    } 
}); 

所以我要把它當您填寫任何字段,則集中了它也會隨之改變輸入。當number_2聚焦時,這可以正常工作,但是當您返回並更改number_1時,這些值會變得雜亂無章。可能只是俯視一些簡單的東西,因爲這不應該那麼困難。

+7

'價值變得混亂。'這不夠描述。請給出預期的輸出結果,以及你得到的結果。 –

+2

您的代碼會去掉句點,例如'1.1' –

+2

這段代碼有很多問題 - http://chat.stackoverflow.com/rooms/17/javascript希望在這裏,我們可以指出更多點 – rlemon

回答

1

當您舍入結果時,您需要重新指定爲「number_2_calc」。

number_2_calc = Math.round(number_2_calc).toFixed(2); 
+0

請注意,將不正確地四捨五入數字。他想'number_2_calc =(Math.round((number_2_calc)* 100)/ 100).toFixed(2)' –

+0

@RJJordan我想他可能;我不清楚代碼的重點應該是什麼。 – Pointy

+0

對不起,沒有提到他在JS房間,我們正在談論它。 (我不會回答,所以你可以編輯這個到你的,如果你喜歡,或不,它是whatev) –