Foros del Web » Programando para Internet » Javascript »

Asociar valor a vector

Estas en el tema de Asociar valor a vector en el foro de Javascript en Foros del Web. Hola a todos, tengo el siguiente problema: quiero guardar los valores introducidos en un input text en un array para luego hacer cálculos con las ...
  #1 (permalink)  
Antiguo 13/11/2008, 04:06
FJE
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 5 meses
Puntos: 0
Asociar valor a vector

Hola a todos, tengo el siguiente problema: quiero guardar los valores introducidos en un input text en un array para luego hacer cálculos con las posiciones, pero como lo tengo puesto no funciona, a ver si me podéis decir el fallo, el código es el siguiente:

<BODY>

<SCRIPT LANGUAGE="JavaScript" type="text/javascript">

function calcular(){
var i;
var resultado;
vector_aux = new Array(100);
vector_aux = document.getElementById("vector").value;

for(i=0; i<=99; i++){
if (vector_aux[i] != null){
if (vector_aux[i] != ' '){
resultado = resultado + vector_aux[i];

}
}
}
alert("El resultado es: " + resultado);
}

</SCRIPT>

<input type="text" id="vector";'>

<input type="button" value="Suma" onClick='calcular();'>

</BODY>

Un saludo y gracias!!!
  #2 (permalink)  
Antiguo 13/11/2008, 07:52
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Asociar valor a vector

Hola,
Primero que nada, ¿cuál es la intención?
Lo que veo es que asignás a vector_aux dos valores diferentes, uno inmediatamente después que el otro. Eso te puede estar causando un error.

Por otro lado, ¿cómo es la forma de la cadena que se introduce en el campo de texto?


Saludos
  #3 (permalink)  
Antiguo 13/11/2008, 08:50
FJE
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asociar valor a vector

Gracias por tu respuesta.

La cadena que voy a introducir es una serie de números, por ejemplo: 183, con estos números lo que quiero hacer es sumarlos y que aparezca el resultado en un alert por ejemplo, es decir, que debería salir 12 (1+8+3). Por lo que necesito transformar esa cadena de números que introduzco en un array para decirle que sume la posición 0, la 1, la 2, etc... supongo que a lo mejor con un substring o algo similar también se podría hacer la suma, de primeras se me ocurrió lo del array, si hay alguna manera más simple pues mejor.

Espero haberme explicado, un saludo y gracias por tu interés.
  #4 (permalink)  
Antiguo 13/11/2008, 09:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asociar valor a vector

A no ser que tengas que recuperar nuevamente los números ingresados posteriormente no veo necesario usar un array, puedes usar una variable que vaya sumándose cada vez que pasa por la función calcular().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 13/11/2008, 09:23
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Asociar valor a vector

Yo lo encararía de esta forma:

la función calcular() primero que nada valida el contenido del campo de texto, usando esta expresión regular que solamente admite números y espacios:

patron = /[0-9 ]+/

Luego, se utiliza el método split() para separar la cadena por el o los espacios que contenga:

cadena.split(/\s+/)

esto transforma "12 23 34 45 56" en un vector en el que la entrada cero es 12, la entrada uno es 23, y así.

Entonces basta con recorrer ese vector para ir sumando los valores, convertidos previamente con parseInt:

for (i = 0; i < valores.length; i++)
resultado += parseInt(valores[i]);


Espero te sirva, para mayor ayuda sobre los métodos nada mejor que buscar en el Mozilla Developer Center.


Saludos.
  #6 (permalink)  
Antiguo 13/11/2008, 10:26
FJE
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asociar valor a vector

Gracias por vuestras respuestas, pero sigue sin funcionarme, supongo que no habré puesto bien las piezas en su sitio, me sale el siguiente error: "El objeto no acepta esta propiedad o método". El código que tengo es este:

function calcular(){
cadena = /[0-9 ]+/

valores = cadena.split(/\s+/)

for (i = 0; i < valores.length; i++)
resultado += parseInt(valores[i]);

alert("El resultado es: " + resultado);
}

<input type="text" id="cadena";'>

<input type="button" value="Sumar" onClick='calcular();'>

¿Ahora qué está mal? Un saludo y gracias.
  #7 (permalink)  
Antiguo 13/11/2008, 10:32
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asociar valor a vector

No, estás confundiendo lo que dijo alvlin. Estás tratando de aplicar split a una expresión regular, la expresión regular que él te puso al principio era para validar números, mientras que el split era para separar tu cadena por los espacios, convirtiéndolo en un array.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 13/11/2008, 10:43
FJE
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asociar valor a vector

Gracias al nulo nivel de javascript que tengo me estoy haciendo un lío En la explicación de alvlin cómo asocio "cadena" con "valores"??? es que no me aclaro y tampoco entiendo muy bien lo de la expresión regular ni cómo se usa.

Un saludo y gracias de nuevo.
  #9 (permalink)  
Antiguo 13/11/2008, 10:50
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asociar valor a vector

Pues usando el método split() de la cadena, alvlin te pasó un excelente enlace para investigar .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 13/11/2008, 11:00
FJE
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asociar valor a vector

Llevo todo el día investigando, estoy aprendiendo javascript desde hace una semana y aunque mi nivel es bastante básico intento solucionar las cosas por mí mismo y como última medida en caso de que no sea capaz después de hacer mil pruebas recurro a preguntar en este foro. Seguiré investigando.

Un saludo.
  #11 (permalink)  
Antiguo 13/11/2008, 11:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asociar valor a vector

Cita:
Iniciado por alvlin Ver Mensaje
Luego, se utiliza el método split() para separar la cadena por el o los espacios que contenga:

cadena.split(/\s+/)

esto transforma &quot;12 23 34 45 56&quot; en un vector en el que la entrada cero es 12, la entrada uno es 23, y así.
Fíjate en esa explicación, no hay manera de equivocarse:
Código javascript:
Ver original
  1. var ejemplo="12 23 34 45";
  2. var arreglo = ejemplo.split(/\s+/);
  3. /* Aquí el resto del código para recorrer "arreglo" */
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 13/11/2008, 11:56
FJE
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asociar valor a vector

Siento ser un 'pesao' pero he seguido el ejemplo que me has puesto y me devuelve esto: El resultado es:NaN

El código que tengo ahora mismo es este:

<html>
<head>
</head>
<body>

<script>

function calcular(){
var i;
var resultado;
var ejemplo="12 23 34 45";
var arreglo = ejemplo.split(/\s+/);

for (i = 0; i < arreglo.length; i++){
resultado += parseInt(arreglo[i]);}

alert("El resultado es:" + resultado);
}

</script>

<input type="button" value="Sumar" onClick = "calcular()";>

</body>
</html>

¿Por qué me dice que el resultado no es un número?

Gracias de nuevo, te estás ganando el cielo conmigo.
  #13 (permalink)  
Antiguo 13/11/2008, 12:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asociar valor a vector

En vez de var resultado; coloca var resultado=0;. Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 13/11/2008, 12:18
FJE
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asociar valor a vector

Por fin funciona!!! 'solo' me ha costado de cansinearos a vosotros un montón y de rebuscar por mil sitios, aunque si no llega a ser por vosotros seguro que no lo saco.

Un millón de gracias y perdonad lo idiota que soy.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:24.