2017-08-28 80 views
-1

我有3個文本框,一個取值,另一個計算該值的20%,並從初始值中減去它。它不能準確地工作。我的javascript不準確計算

這是我的代碼。

function sum() { 
 
    var txtFirstNumberValue = document.getElementById('txt1').value; 
 
    var txtSecondNumberValue = document.getElementById('txt4').value; 
 
    var result = parseInt(txtFirstNumberValue) * 0.2; 
 
    var balance = parseInt(txtFirstNumberValue) - 
 
    parseInt(txtSecondNumberValue); 
 

 

 
    if (!isNaN(result)) { 
 

 
    document.getElementById('txt3').value = balance; 
 
    document.getElementById('txt4').value = result; 
 
    } 
 
}
<input type="text" id="txt1" onkeyup="sum();" /> 
 
<input type="text" id="txt3" /> 
 
<input type="text" id="txt4" />

+1

什麼不起作用?需要說明問題所在。 – epascarello

+0

可能是另一個浮點問題... –

+0

問題是在你輸入第一個輸入時出現在第二個輸入中的'NaN'? –

回答

0

的問題是,你想你計算它

document.getElementById('txt4').value 

始終是一個回踩之前得到的計算結果,只要你想,這將無法正常工作它來。

你真正想要做的是使用result計算差額:

var balance = parseFloat(txtFirstNumberValue) - result; 

請注意,我把它換成parseIntparseFloat。這樣代碼將支持浮動數字作爲輸入。

function sum() { 
 
    var txtFirstNumberValue = document.getElementById('txt1').value; 
 
    var result = parseFloat(txtFirstNumberValue) * 0.2; 
 
    var balance = parseFloat(txtFirstNumberValue) - result; 
 

 

 
    if (!isNaN(result)) { 
 

 
    document.getElementById('txt3').value = balance; 
 
    document.getElementById('txt4').value = result; 
 
    } 
 
}
<input type="text" id="txt1" onkeyup="sum();" /> 
 
<input type="text" id="txt3" /> 
 
<input type="text" id="txt4" />

+0

謝謝,我的JavaScript不是那個代碼呢。 – eugbana