Foros del Web » Programando para Internet » Javascript »

variable 'undefined' al recorrer array

Estas en el tema de variable 'undefined' al recorrer array en el foro de Javascript en Foros del Web. buenas noches, trato de recojer los errores de validación para luego mostrarlos con ventanas alert normales de windows, no entiendo muy bien que puede ocurrir, ...
  #1 (permalink)  
Antiguo 18/01/2009, 15:43
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
variable 'undefined' al recorrer array

buenas noches,

trato de recojer los errores de validación para luego mostrarlos con ventanas alert normales de windows, no entiendo muy bien que puede ocurrir, igual llevo muchas horas delante de la pantalla,

cuando realizo esto:

else
{
for ( i=0;i<mensajes.length;i++ )
{
%>
<h5><%=mensajes[i]%></h5>
<%
}
%>
<div class="izquierda">
<input type="button" name="atras" value="Continuar" class="button" onclick="" />
</div>
<%
}

Pues bien, los mensajes se muestran:

Debe completar los datos para: CIF
.................................................. .....
Debe introducir un CIF ó NIF válido.

cuando intento enviar los mensajes, previamente guardados en una variable, para despues mostrarlos con alert windows:

else
{
var alerta = 'mensaje,';
for ( i=0;i<mensajes.length;i++ )
{
alerta += mensajes[i] + ',';
}
Response.Write(alerta);
}

inserta un undefined entre mensaje y mensaje, esto es lo que se muestra en pantalla:

mensaje,Debe completar los datos para: CIF,undefined,
Debe completar los datos para: EMPRESA,undefined,
.................................................. ......................................
Debe introducir un CIF ó NIF válido.,undefined

un saludo,
josé carlos.
  #2 (permalink)  
Antiguo 18/01/2009, 16:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: variable 'undefined' al recorrer array

Tema trasladado a Javascript.
  #3 (permalink)  
Antiguo 18/01/2009, 21:56
Avatar de sweetlydark  
Fecha de Ingreso: septiembre-2008
Mensajes: 391
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: variable 'undefined' al recorrer array

Esto esta hecho en ASP completo? o esta combinado con javascript? sabes que no puedes usar un variable de asp en javascript aunque creo que estas usando solo asp.
__________________
Por fin vuelvo a tener internet!
http://www.anidandoetiquetas.com/
  #4 (permalink)  
Antiguo 19/01/2009, 04:32
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Respuesta: variable 'undefined' al recorrer array

utilizo javascript como lenguaje de script asp, vamos que si es javascript pero no corre del lado del cliente,

efectivamente tambien lo he probado como:

<%=alerta%>

pero el resultado es el mismo,
no entiendo por que se me cuelan esos 'undefined',

la cuestión es que trato de enviar una cadena desde una pagina asp (cuyo lenguaje de script es javascript) mediante ajax para despues mostrar los mensajes, bien mediante ventanas alert window o bien mediante box creadas con lightbox,

un saludo,
josé carlos.
  #5 (permalink)  
Antiguo 19/01/2009, 09:32
Avatar de sweetlydark  
Fecha de Ingreso: septiembre-2008
Mensajes: 391
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: variable 'undefined' al recorrer array

creo que deberias observar cuando llenas el arreglo mensaje que el problema lo mas seguro es alli. Undefined es como el valor defecto de javascript. El lo utiliza si el variable no tiene un valor, si no reconoce un valor, si quieres ser un operacion que no entiende, etc.
__________________
Por fin vuelvo a tener internet!
http://www.anidandoetiquetas.com/
  #6 (permalink)  
Antiguo 19/01/2009, 10:23
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Respuesta: variable 'undefined' al recorrer array

'undefined' = variable no iniciada

utilizo 2 variables, alerta y mensajes

alerta la inicializo y mensajes es un array que recorro para formar una cadena en la variable alerta,

la pagina.asp que procesa los mensajes se ejecuta llamandola con ajax, y lo demas es devolver el resultado, en este caso alerta, como una cadena,

bien con Response.Write(alerta)
bien con <%=alerta%>

he puesto las dos formas en el primer post,
primero mostrando los mensajes uno a uno <h5><%=mensajes[i]%></h5>
segundo llenando una variable para procesarla de vuelta desde un javascript en local, el que gestiona la conexión con ajax,

pero por muchas vueltas que le doy, no veo por que despues de cada iteracción del for, añade un 'undefined'

help!!!!!

un saludo,
josé carlos.
  #7 (permalink)  
Antiguo 19/01/2009, 11:00
Avatar de sweetlydark  
Fecha de Ingreso: septiembre-2008
Mensajes: 391
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: variable 'undefined' al recorrer array

Sigo con lo mismo cuando se te llena el arreglo mensaje te esta insertando algo no definida o creado un articulo no usado en tu arreglo. Ya que no hay razón porque el código de arriba lo haga si mensaje esta definida.

Yo usando el siguiente javascript:

Código:
var alerta = 'mensaje,';
mensajes = ['uno', 'dos', 'tres', 'cuatro'];
for ( i=0;i<mensajes.length;i++ )
{
alerta += mensajes[i] + ',';
alert(alerta);
}
alert(alerta);
Todo me sale de lo mas bien.
__________________
Por fin vuelvo a tener internet!
http://www.anidandoetiquetas.com/
  #8 (permalink)  
Antiguo 19/01/2009, 11:12
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: variable 'undefined' al recorrer array

Para plantear de otra forma lo que dice sweetlydark:

evoarte, ¿podrías enseñarnos el código donde vas guardando los mensajes en el array mensajes?
  #9 (permalink)  
Antiguo 19/01/2009, 12:01
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Respuesta: variable 'undefined' al recorrer array

buenas tardes, amigos,

pues he revisado uno de los códigos que utilizo desde siempre, tiene varios años, un archivo escrito en javascript aunque del lado del servidor, que utilizo siempre, para hacer validaciones sobre campos de formulario y he descubierto que efectivamente estaba creando mal el array mensajes:

var mensajes = new Array();
mensajes[mensajes.length+1]="<script>alert('...........');</script>";

codigo este ultimo que creaba por cada validación que se realiza.

está claro que estaba dejando sin cargar mensajes[0]

pues, nunca me ha dado ningún problema, este comportamiento del script ahora es inesperado, y antes de utilizar ajax los mensajes se mostraban desde las páginas asp directamente, así:

<%
Response.Write("<html><head></head><body> ");
for (i=0;i<mensajes.length;i++)
{
Response.Write(mensajes[i]);
}
Response.Write("<script>window.history.back();</script>");
Response.Write("</body></html>");
%>

y sin embargo este código funciona a la perfección. no podía pensar que tenía durante años mal cargado el array mensajes.

está claro que mensajes[0] es undefined por que no se ha inicializado, pero que colocará un 'undefined' despues de cada iteracción no lo entiendo,


gracias,
josé carlos.

Última edición por evoarte; 19/01/2009 a las 12:12
  #10 (permalink)  
Antiguo 19/01/2009, 14:27
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: variable 'undefined' al recorrer array

Cita:
Iniciado por evoarte Ver Mensaje
pero que colocará un 'undefined' despues de cada iteracción no lo entiendo,
Igual que se saltaba el 0, ese código se salta siempre un elemento.

Haces:
Código javascript:
Ver original
  1. mensajes[mensajes.length + 1]="...";

Por cada validación estás cogiendo la longitud y añadiendo no en ese elemento, sino en ese más uno. length te devuelve la longitud, no el último elemento.

Mejor explicado:
Si tienes un array como:
Código javascript:
Ver original
  1. mensajes = ["a", "b", "c"];
Y haces:
Código javascript:
Ver original
  1. mensajes.length
te devuelve 3, pero los elementos son realmente mensajes[0], mensajes[1] y mensajes[2]. Así que si quieres añadir uno más al final, tienes que hacer:
Código javascript:
Ver original
  1. mensajes[mensajes.length]="d";
(que lo que hace es:
Código javascript:
Ver original
  1. mensajes[3]="d";
)

Porque si haces:
Código javascript:
Ver original
  1. mensajes[mensajes.length + 1]="d";
Entonces lo que estás haciendo es dejar el elemento mensajes[3] sin definir y pasando directamente al mensajes[4]. A la vez siguiente te saltarás el mensajes[5] y escribirás en mensajes[6].


Por eso estás metiendo undefined en cada iteración.
  #11 (permalink)  
Antiguo 19/01/2009, 14:54
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Respuesta: variable 'undefined' al recorrer array

que si, así es,

lo que resulta extraño es que con la alternativa que he indicado no haya dado ningún problema,

gracias,
josé carlos.
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 05:02.