Foros del Web » Programando para Internet » Javascript »

Necesito trabajar con un array de objetos en javascript

Estas en el tema de Necesito trabajar con un array de objetos en javascript en el foro de Javascript en Foros del Web. Hola, necesito pasar un array de objetos Empresa a una función javascript. Lo hice pero no me funciona, os pongo el codigo: function chequea (empresas){ ...
  #1 (permalink)  
Antiguo 16/09/2008, 01:47
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Necesito trabajar con un array de objetos en javascript

Hola, necesito pasar un array de objetos Empresa a una función javascript. Lo hice pero no me funciona, os pongo el codigo:

function chequea (empresas){
var e = document.getElementById("e"); //es un parametro que recoge la empresa anterior que había en el formulario, esto lo coge bien
var empresa = new Empresa();
for (i=0; i<empresas.size;i++){
empresa = empresas[i];
if (empresa.CIF == e.value){
document.form.empresa.selectedIndex=i;
}
}
}

lo que tiene que hacer es recoger la empresa que había en el formulario y compararla con las de la lista, y si está la selecciona.

esa función la llamo en el onload del body de la siguiente manera:

<body onload="chequea(${empresas})">
En donde empresas es una lista de objetos empresa que paso a esta jsp.
Saludos!!
  #2 (permalink)  
Antiguo 16/09/2008, 02:10
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Necesito trabajar con un array de objetos en javascript

Hola:

Si empresas es realmente un array, debes consultar su longitud con el atributo length (tu has puesto size)... si no fuera un array (o el array fuera asociativo el bucle tendría que ser for-in... pero primero fíjate en lo que puse al principio.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 16/09/2008, 02:36
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Necesito trabajar con un array de objetos en javascript

Empresas es una lista de objetos empresa. He cambiado la función así:

var e = document.getElementById("e");
alert(e.value);
var i = 0;
<c:forEach items="${empresaList}" var="empresa">
alert("El valor de i es: "+i);
<c:if test="${empresa.CIF == e.value}">
alert("Encuentro la empresa");
document.form.empresa.selectedIndex=i;
</c:if>
i = i+1;
</c:forEach>

Recibe las empresas, pero a la hora de realizar el if, nunca la encuentra. Intento hacer un alert de empresa.CIF pero no va, con lo cual el valor de empresa.CIF no me lo está cogiendo, no sé como cogerlo para que me lo compare.
Saludos!!
  #4 (permalink)  
Antiguo 16/09/2008, 03:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Necesito trabajar con un array de objetos en javascript

Hola:

Qué lenguaje estás usando... ... foreach no existe en javascript... y lo de "<c:"...

El bucle javascript para recorrer atributos de objetos es: for (elemento in objeto)... y en elemento se obtiene el índice asociativo... y para obtener el objeto se usa objeto[elemento]...

Si usas otro lenguaje o librería, deberías indicarlo.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 16/09/2008, 03:24
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Necesito trabajar con un array de objetos en javascript

Mis disculpas
Estoy utilizando las librerías de tags de jstl, de ahí saco el <c:forEach, tal vez no debería usarlas en javascript...?¿?¿
De todas formas voy a intentar resolverlo de la manera que me indicas
Saludos!!

Última edición por morenita7722; 16/09/2008 a las 03:32
  #6 (permalink)  
Antiguo 17/09/2008, 02:17
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Necesito trabajar con un array de objetos en javascript

¿porque no funciona esto?
<c:forEach items="${empresaList}" var="empresa">
<c:if test="${empresa.CIF == valor}">

y sin embargo si en lugar de valor pongo un valor a mano (Ej: '1234'), si funciona
Saludos!!
  #7 (permalink)  
Antiguo 17/09/2008, 02:40
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Necesito trabajar con un array de objetos en javascript

morenita7722, estás mezclando cosas que se ejecutan en momentos diferentes. Es normal que no funcione.

No sé cuánto conocerás de JSP/JSTL y/o de Javascript, así que quizá esto te suene algo básico. Pero como precisamente es en esto en lo que estás fallando, creo que es bueno explicártelo. De cualquier modo, yo de ti revisaría algún tutorial básico sobre lenguajes de servidor o sobre cómo funciona JSP/JSTL.

Cuando pides una página, la parte de Java/JSTL se ejecuta en el servidor, antes de enviarte la página a tu navegador. La parte de Javascript se ejecuta en el navegador, es decir, una vez que ya has recibido la página. Después. Así que, cuando haces esto:

Código:
var e = document.getElementById("e");
alert(e.value);
<c:if test="${empresa.CIF == e.value}">
La última línea, la de JSTL, se está ejecutando en el servidor. Mucho antes de que se ejecute nada del Javascript. Antes incluso de que el usuario haya rellenado el campo. Antes de que la página llegue al navegador.

Por eso mismo, en esa línea e.value no tiene sentido, no significa nada y no encuentra ninguna empresa que coincida con eso.
  #8 (permalink)  
Antiguo 17/09/2008, 06:44
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Necesito trabajar con un array de objetos en javascript

Hola venkman, gracias por contestar, estabas en lo cierto, e.value no tenía sentido.
Saludos!!
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 15:01.