2013-02-24 84 views
6

我有一個問題遞增0.5。我使用了「+ =」運算符,但不是遞增我的數字,而是在數字的末尾添加了「0.5」值。這個例子是這樣的:JavaScript增加0.5 - 如何?

<script> 
function setTempUp(){ 
var value = document.getElementById("targetTemp").firstChild.data; 
var newvalue = value.replace("°",""); 
var num = new Number(newvalue); 
var num = newvalue += 0.5; 
var newtemp = newvalue + '°'; 
document.getElementById("targetTemp").innerHTML = newtemp; 
var cover = document.getElementById('tempChange').clientHeight; 
var coverInt = parseInt(cover, 10); 
var coverNew = cover - 11; 
document.getElementById('tempChange').setAttribute("style","height:" + coverNew + "px"); 
}  
</script> 

我還「附加」「°」,我的「newTemp」,因爲我有溫度的例子。這是一個問題嗎?

所以,我的號碼是24 - 例如在執行時,我得到 「240.5」 :(

回答

6

newvalue是一個字符串,您num直接使用+=

num += 0.5; 
+0

我已經使用過了 - 它工作的很棒。謝謝大家的快速回答。 – 2013-02-24 18:22:14

0

newValue是一個字符串 - 通過value.replace("°","");

而不是

var num = newvalue += 0.5; 
返回

使用

newValue = parseInt(newvalue, 10) + 0.5; 

(既然你不使用num其他地方,你不需要給它分配任何結果。)

+0

這仍然存在雙賦值的問題,它會引發錯誤。 – Giles 2013-02-24 17:58:13

+0

@Giles - 只是更新'num',而不是在函數中再次使用 - 'var num'的附加聲明沒有任何作用 - 請參閱http://stackoverflow.com/a/14010168/836214 – Krease 2013-02-24 18:02:37

+0

抱歉,它不是導致錯誤的雙重賦值,這是事實上,你不能將函數'parseInt'增加5。 – Giles 2013-02-24 18:51:16

1

你它鑄造了許多,但仍叫下面的代碼字符串變量:

var num = new Number(newvalue); 
var num = newvalue += 0.5; 
var newtemp = newvalue + '°'; 

我認爲你的意思做的是

var num = new Number(newvalue); 
num = num += 0.5; 
var newtemp = num + '°'; 

但無論如何,您應該在函數中保留一個數字變量,然後增加它,而不是加載上次運行時在屏幕上發佈的溫度,然後重複執行一次。