2013-02-24 34 views
6

Ho un problema con l'incremento di un numero di 0,5. Ho usato l'operatore "+ =" ma invece di incrementare il mio numero, questo aggiunge il valore "0.5" alla fine del numero. L'esempio è questo:JavaScript incrementato di 0,5 - come?

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

sono anche "attaccare" "°" al mio "Newtemp", perché ho ad esempio la temperatura. È un problema?

Quindi, il mio numero è 24, ad esempio - quando eseguito ottengo "240,5" :(

risposta

6

newvalue è una stringa Utilizzare += sul num direttamente:.

num += 0.5; 
+0

Ho usato questo - funziona alla grande. Grazie a tutti per le risposte veloci. –

0

newValue è una stringa - restituito da value.replace("°","");

Invece di

var num = newvalue += 0.5; 

Usa

newValue = parseInt(newvalue, 10) + 0.5; 

(Dal momento che non si sta usando num qualsiasi altro luogo, non è necessario assegnargli alcun risultato.)

+0

Questo ha ancora il problema del doppio compito, che genera un errore. – Giles

+0

@Giles - che aggiorna solo 'num', che non è usato di nuovo nella funzione - dichiarazioni aggiuntive di' var num' non hanno effetto - vedi http://stackoverflow.com/a/14010168/836214 – Krease

+0

scusa, non è il duplice compito che causa l'errore, è il fatto che non è possibile incrementare la funzione 'parseInt' di 5. – Giles

1

si sta casting a un numero, ma ancora chiamare il variabile stringa nel codice seguente:

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

credo che ciò che si intende fare era

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

Ma qualunque sia, è necessario mantenere una variabile numerica fuori dalla funzione e incrementarla, invece di caricare la temperatura che si è postato sullo schermo dall'ultima esecuzione, e quindi ripetere più volte.

Problemi correlati