2013-02-24 14 views
6

Mam problem z inkrementacją liczby o 0,5. Użyłem operatora "+ =", ale zamiast zwiększać liczbę, dodaje ona wartość "0,5" na końcu numeru. W przykładzie jest to:JavaScript zwiększający się o 0.5 - jak?

<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> 

ja też „mocowania” „°” do mojego „newTemp”, bo mam przykład temperatury. Czy to problem?

Tak, mój numer to 24 na przykład - gdy wykonywane otrzymuję "240,5" :(

Odpowiedz

6

newvalue jest ciągiem Użyj += na num bezpośrednio.

num += 0.5; 
+0

Użyłem tego - działa świetnie. Dziękuję wszystkim za szybkie odpowiedzi. –

0

newValue jest ciągiem - zwracane przez value.replace("°","");

Zamiast

var num = newvalue += 0.5; 

Zastosowanie

newValue = parseInt(newvalue, 10) + 0.5; 

(Ponieważ nie używasz num gdziekolwiek indziej, nie trzeba przypisać mu żadnych rezultatów.)

+0

To nadal ma problem podwójnego przypisania, które powoduje błąd. – Giles

+0

@Giles - to tylko aktualizuje 'num', które nie jest ponownie używane w funkcji - dodatkowe deklaracje' var num' nie mają żadnego efektu - patrz http://stackoverflow.com/a/14010168/836214 – Krease

+0

Niestety, to nie jest podwójne przypisanie, które powoduje błąd, to fakt, że nie można zwiększyć funkcji 'parseInt' przez 5. – Giles

1

Jesteś rzucając go na liczbę, ale nadal nazywają zmienna ciąg w następującym kodzie:

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

myślę, że to, co masz na myśli, aby zrobić to

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

Niezależnie od tego, która z nich jest, powinieneś zachować zmienną numeryczną poza funkcją i zwiększać ją, zamiast ładować temperaturę, którą opublikowałeś na ekranie od ostatniego uruchomienia, a następnie robić to wielokrotnie.

Powiązane problemy