2011-02-04 10 views
10

sto cercando di aggiungere al mio 1 variabile JavaScript, ma il seguente codice non dà i risultati attesi:Come aggiungere insieme valori numerici che sono memorizzati nelle stringhe?

var val1 = document.getElementById('<%= rng1.ClientID %>'); 
var val2 = val1.value + "1"; 
alert(val2.value); 

Come posso fare questo?

+2

Stai provando a aggiungerne uno matematicamente? Vale a dire. 3 + 1 = 4. O aggiungendo "1" alla fine di una stringa? Vale a dire. "3" + "1" = "31". – anothershrubery

+0

Assegnate una stringa o un numero a 'val2'. Quindi, non è un oggetto e non ha una proprietà 'value'. Se ti chiedi perché esiste 'val1.value':' val1' contiene un riferimento ad un elemento di form HTML che ha una proprietà 'value'. –

risposta

18

è possibile utilizzare la funzione parseInt() per trasformare la stringa memorizzata in val1.value in un numero:

var val2 = parseInt(val1.value) + 1; 

noti che Number(val1.value) anche convertire il valore in un numero.

operativa -Editazione-
Come YC suggeriscono, si consiglia vivamente di utilizzare parseInt(val1.value, 10) + 1; perché se la stringa inizia con una "0" la stringa viene interpretato come ottale. per esempio. parseInt("0123") == 83 e non 123

+2

Non dimenticare di aggiungere il secondo argomento in 'parseInt()' di 10, quindi non erroneamente valutato come ottale. – Yahel

+1

Meglio ancora, non usare 'parseInt()' affatto se non ne hai bisogno, usa solo '+' o 'Number()', nessuno di quei parse ottali. per esempio. '+ val1.value + 1'. 'parseInt()' serve principalmente per estrarre i numeri dall'inizio delle stringhe, quindi finché la stringa è un valore letterale numerico valido, non è necessario. –

0

è necessario aggiungere il numero, in modo da provare senza virgolette :-)

+0

e utilizzare anche parseInt() per l'altro valore –

5

Il più semplice e anche modo preferito sarebbe quello di utilizzare + per lanciare in un numero.

Esempi:

+'234'; // 234 
+'042'; // 42! It does not convert to octal 

Nel tuo caso:

var val1 = +(document.getElementById('<%= rng1.ClientID %>').value); //() added just for the looks 
var val2 = val1.value + 1; // if val1 is 5, val2 will be 6 hooray! 
alert(val2); // just val2, since it's a plain number not an html input element 
0

In un JavaScript esterno file non è possibile utilizzare il <%=ControlID.ClientID %> per ottenere l'ID client.

Se si utilizza un file JavaScript esterno è necessario passare il valore dell'ID client a tale funzione.

1
parseInt($('.scpContainer').height()+200) 
+0

Grazie! Questo ha funzionato per me. – irishwill200

Problemi correlati