2011-02-04 15 views
10

estoy tratando de añadir a mi 1 variable de JavaScript, pero el siguiente código no da los resultados esperados:Cómo agregar valores numéricos que se almacenan en cadenas?

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

¿Cómo puedo hacer esto?

+2

¿Estás intentando agregar uno matemáticamente? Es decir. 3 + 1 = 4. ¿O agregando "1" al final de una cadena? Es decir. "3" + "1" = "31". – anothershrubery

+0

Está asignando una cadena o un número a 'val2'. Por lo tanto, no es un objeto y no tiene una propiedad 'value'. Si se pregunta por qué 'val1.value' existe:' val1' contiene una referencia a algún elemento de formulario HTML que tiene una propiedad 'value'. –

Respuesta

18

puede utilizar la función parseInt() para transformar la cadena almacenada en val1.value en un número:

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

Tenga en cuenta que Number(val1.value) también convertirá su valor en un número.

operación -Editar-
Como YC sugieren, es muy recomendable utilizar parseInt(val1.value, 10) + 1; porque si su cadena comienza con un "0" la cadena se interpreta como octal. p.ej. parseInt("0123") == 83 y no 123

+2

No olvide agregar el segundo argumento en 'parseInt()' de 10, por lo que no se evalúa erróneamente como un octal. – Yahel

+1

Mejor aún, no use 'parseInt()' en absoluto si no lo necesita, simplemente use '+' o 'Number()', ninguno de esos octals de análisis. p.ej. '+ val1.value + 1'. 'parseInt()' es principalmente para extraer números desde el inicio de las cadenas, por lo que siempre que su cadena sea un literal numérico válido, no lo necesita. –

0

debe agregar el número, así que probarlo sin comillas :-)

+0

y también usa parseInt() para el otro valor –

5

El más simple y también forma preferida sería utilizar + para echar a un número.

Ejemplos:

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

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

En un JavaScript externo archivo que no puede utilizar el <%=ControlID.ClientID %> para obtener el ID de cliente.

Si utiliza un archivo JavaScript externo, debe pasar el valor de identificación del cliente a esa función.

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

¡Gracias! Éste trabajó para mí. – irishwill200

Cuestiones relacionadas