2013-02-24 32 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 + '°'; 

但无论如何,您应该在函数中保留一个数字变量,然后增加它,而不是加载上次运行时在屏幕上发布的温度,然后重复执行一次。