Foros del Web » Programando para Internet » Javascript »

Problema recorriendo Array

Estas en el tema de Problema recorriendo Array en el foro de Javascript en Foros del Web. Buenas Noches a todos! Tengo un problema que no se porque se da, pero la verdad que llevo bastante tiempo intentado arreglaro. Primero pense que ...
  #1 (permalink)  
Antiguo 29/08/2009, 20:32
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Problema recorriendo Array

Buenas Noches a todos!

Tengo un problema que no se porque se da, pero la verdad que llevo bastante tiempo intentado arreglaro. Primero pense que era problema del codigo PHP que utilizo para armar dinamicamente el JS, pero luego me di cuenta que lo que no funciona realmente es el codigo JS.

La cuestion es la siguiente: yo tengo un array con varios nombres que recojo de una BD, y mi idea es recorrerlo mediante un for. Hasta aqui, todo sencillo. El problema es que, esto sencillo, no funciona!...

Al ejecutar el codigo, me aparece un error, diciendo que se intento acceder a un indice del array fuera del rango permitido, es decir, si el largo del array es de 10, intente acceder a las posicion 10, u la 11... en fin, ese es mi problema. He aqui mi codigo (ya procesado por el servidor, es decir, el js propiamente dicho, sin nada de PHP):

Código:
// menu principal
var prin = ['nosotros','portfolio','experimental','contacto'];
// menues secundarios
var sec = ['logos','impresos','web','ilustraciones'];
// menues terciarios
var ter = ['impresos1','impresos2','impresos3','impresos4','impresos5','impresos6','impresos7','impresos8','impresos9','logos11','impresos12','impresos13','impresos14','impresos15','impresos16','impresos17','impresos18','impresos19','impresos20','impresos21','impresos22','impresos23','impresos24'];


// funcion que cambia de clase segun la opcion

function menu_prin(div){
	borrar();

	for (i=0;i<prin.length;i++){

		if(prin[i]==div){

			document.getElementById(prin[i]).className = 'current';
			if(div=="portfolio"){$('#oculto').slideDown('slow');}

		}else{

			document.getElementById(prin[i]).className = '';
			if(div!="portfolio"){$('#oculto').slideUp('slow');}

		}

	}
	menu_secu(div);

}
function menu_secu(div){
	borra_sub();
	for(i=0;i<sec.length;i++){
		if(sec[i]==div){
			document.getElementById(sec[i]).className = 'current';
			$('#oc'+div).slideDown('slow');
		} else{
			document.getElementById(sec[i]).className = '';
			$('#oc'+sec[i]).slideUp('slow');
		}
	}
}
function menu_ter(div){
	for(i=0;i<ter.length;i++){
		if(ter[i]==div){

			document.getElementById(ter[i]).className = 'current';

		}else{

			document.getElementById(ter[i]).className = '';

		}
	}
}
function borrar(){
	for (i=0;i<prin.length;i++){

		document.getElementById(prin[i]).className = '';
	}
	for (i=0;i<sec.length;i++){

		document.getElementById(sec[i]).className = '';
	}
	borra_sub();
}
function borra_sub(){
	for (i=0;i<ter.length;i++){

		document.getElementById(ter[i]).className = '';
	}
}

El array en cuestion es ter, y la funcion que me da error es borra_sub, que recorre ter a partir de su len, pero por x motivos, no funciona correctamente.

Alguna ayuda??

Desde ya, muchas gracias!!

Pablo.
  #2 (permalink)  
Antiguo 29/08/2009, 20:49
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema recorriendo Array

indica cual es el error que te marca la consola porque yo lo intento y me funciona. quizas el problema esta en el diseño de tu aplicacion. quiero decir, por ejemplo, en un principio pense que ter iba desde "impresos1" hasta "impresos24" y me daba problema. luego me fije que "impresos10" no existe y que la posicion 8 del array dice "logos11". ¿el navegador no te estara marcando que dicho elemento no existe?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 29/08/2009, 21:57
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problema recorriendo Array

El problema que devuelve es este:

document.getElementById(ter[i]) is null

en la linea 60, es decir, en la funcion borra_sub. De todas formas, cual es el inconveniente de que tegan nombres diferentes? Si el array fuese:

array = ["pablo","martin","juan"], y lo intentase recorrer, tendria que funcionar de todas formas, o no? Y aun asi los nombres no tienen nada que ver entre ellos.
Es por eso que no entiendo cuando me dices que el problema puede estar en el diseño de la aplicacion. Todo lo que uso es lo que puse: accedo a los elementos a traves de sus indices, y no de sus nombres, asique supongo que tendria que funcionar de todas formas, no es cierto?

Gracias!
  #4 (permalink)  
Antiguo 29/08/2009, 22:07
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema recorriendo Array

Cita:
De todas formas, cual es el inconveniente de que tegan nombres diferentes? Si el array fuese:
array = ["pablo","martin","juan"], y lo intentase recorrer, tendria que funcionar de todas formas, o no?
no hay ningun inconveniente, solo quise mencionar que pudo haber sido un error de tu parte y no te fijaste. asegurate que los elementos tenga el ID tal como lo tienes en el array, por eso te devuelve el error que indicas.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 29/08/2009, 22:28
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problema recorriendo Array

Efectivamente... dentro del array, esta haciendo un getElementById a un elemento que no existia... entonces no funcionaba el resto del codigo.

Hay alguna forma de comprobar si existe el ID, para luego aplicarle un metodo, y que en caso de no existir, siga con el resto de los elementos del array, saltandose ese?

Yo creo recordar haber utilizado una funcion similar en PHP, o Python, que era un if(exists(variable)... algo asi... existe en JS?

Muchas gracias!

Pablo
  #6 (permalink)  
Antiguo 29/08/2009, 23:36
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema recorriendo Array

directamente no existe un equivalente PHP o python en javascript, pero puedes escribirla. aunque despues de todo no es necesario escribir la funcion porque una simple linea bastara puesto que en un condicional un elemento se traduce al booleano true y null a false. simplemente tienes que buscar el elemento con getElementById y llamar continue cuando este elemento no existe.
Código:
if(!document.getElementById(ter[i])) continue;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 30/08/2009, 18:00
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problema recorriendo Array

muchas gracias por tu ayuda! me ha sido de gran utilidad... te agradezco!

pablo.
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 20:37.