2013-05-21 42 views
-4

我需要使用javascript在文本框 中增加一個分數。Javascript:如何增加文本框中的分數值?例如:0.10到0.11

的目標是增加1個便士直到0.99 和那麼這將是1.00和1.01

怎麼能這樣用JavaScript做什麼?

這是什麼不工作。

var a; 
a = document.getElementById('a1').value; 
a = a+a; 
alert(a); 

警報返回

0.100.10 

附加信息

var a; 
a = parseFloat(document.getElementById('b13').value); 
a = a+a; 
alert(a); 

回報

0.2 

我寧願看到0.20

但最重要的是,如何一次增加0.01?

解決:

兩個

var a; 
a = parseFloat(document.getElementById('a1').value); 
a = a+0.01; 
alert(a); 
} 

和...

document.getElementById('a1').value = +document.getElementById('a1').value + 0.01 

工作的罰款。

回答

2

文本框返回的值作爲字符串,以便分析它

var a; 
a = parseFloat(document.getElementById('a1').value); 
a = (a+a).toFixed(2); 
alert(a); 

而且它不會增加0.01到。它加倍一個所以用這樣的事情。

var a; 
a = parseFloat(document.getElementById('a1').value); 
a = (a + 0.01).toFixed(2); 
alert(a); 
+1

我建議您從HMR的評論中添加toFixed(2),以便0.10不會顯示爲0.1,理想情況下,因爲問題是關於更改文本框中的值,請設置計算後返回值。 –

+0

@ScottMermelstein謝謝..實際上我沒有看到 –

1

首先轉換成a這樣,

a = parseFloat(document.getElementById('a1').value); 

然後添加和轉換浮動這樣,

a = (a + a).toFixed(2) 

,並警告答案。

+1

這個問題的編輯部分你知道'parseInt'將放棄所有小數位,'toFixed'會再次將它變成一個字符串,對嗎? –

+0

並且a = a + a不會將0.01添加到... –

+0

您應該使用parseFloat而不是pareInt,我不認爲返回的字符串很重要,因爲OP將使用它作爲值的文本輸入(很可能),但是如果需要進一步處理則很好。在未來,我們可以使用HTML 5 input type =「number」 – HMR

1

a包含一個字符串,而不是一個數字。 string + string返回兩個字符串的連接 - 你沒有告訴Javascript它是一個數字,所以它不會像一個一樣對待它。

您可以使用parseFloat和parseInt將字符串轉換爲浮點數(具有小數位)或整數(不)。http://www.javascripter.net/faq/convert2.htm

但是,請注意浮點數由於被存儲在有限的內存量中而具有不準確性 - 在一定數量的地方(而不是小數位) - 二進制位,例如0.1不能表示完全是一個浮點數,儘管基數10只有一位小數!),如果你需要做重要的財務計算,你應該知道這個不準確性(例如,你可能使用定點數系統) 。有關更多信息,請閱讀What Every Computer Scientist Should Know About Floating-Point Arithmetic

2

a = a+a不添加.01。如果a是一個數字,它會加倍a,但是由於javascript將它看作一個字符串,它只是將它連接起來。

你想要a = +a+0.01

這會將0.01加到a的值上。最初的+是爲了確保JavaScript將a作爲數字而不是字符串。

這將正常工作對您的提醒,但你仍然需要設定值回:

document.getElementById('a1').value = a 

或者,把它所有在同一行(使用HMR的toFixed除):

document.getElementById('a1').value = (+document.getElementById('a1').value + 0.01).toFixed(2) 
+0

OP在某些時候更新了需要2個小數點的問題,可以這樣做:(+「0.29」+ 0.01).toFixed(2);這將返回字符串「0.30」 – HMR

+1

@HMR有趣的是,我只是給Prasath留言以做同樣的事情。我現在修好了。 –

相關問題