Foros del Web » Programando para Internet » Javascript »

problema con el DOM

Estas en el tema de problema con el DOM en el foro de Javascript en Foros del Web. saludos a todos, he decidido incurcionarme en el mundo javascript y estaba haciendo un script para ocultar y mostrar elementos, para evitar andar dando atributos ...
  #1 (permalink)  
Antiguo 23/01/2011, 17:08
Avatar de Lord_Jose  
Fecha de Ingreso: abril-2010
Ubicación: El antiguo estado federal de Honduras
Mensajes: 20
Antigüedad: 14 años
Puntos: 1
problema con el DOM

saludos a todos, he decidido incurcionarme en el mundo javascript y estaba haciendo un script para ocultar y mostrar elementos, para evitar andar dando atributos id a todas mis etiquetas decidi usar el arbol de nodos para acceder a cada uno de los elementos como se muestra en este fragmento:

Código HTML:
Ver original
  1. <li>
  2.              <a href="#" id="listaDosUno">aqui va un submenu</a>
  3.          <ul>
  4.                  <li><a href="#">contenido 1</a></li>
  5.                  <li><a href="#">unas cosas</a></li>
  6.                  <li><a href="#">otras cosas</a></li>
  7.           </ul>
  8. </li>

y para hacer una futura referencia dinamica a estos elementos con php tengo en el head:

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. //variables de mostrado
  3. listas = new Array();
  4. listas[0] = 'listaDosUno';
  5. listas[1] = 'listaDosDos';
  6. listas[2] = 'listaDosTres';
  7. </script>
sin embargo, donde tengo el problema es aqui:

Código Javascript:
Ver original
  1. function ocultaOMuestra(capas){
  2. // aqui le estoy dando por ejemplo 'listaDosUno' como la variable 'capas'
  3.     var padre = document.getElementById(capas).parentNode;
  4.     var capa = padre.childNodes[1];
  5.     if(capa.style.display == 'none'){
  6.         capa.style.display = 'block';
  7.     }
  8.     else{
  9.         capa.style.display = 'none';
  10.     }
  11. }
  12.  
  13.  
  14. function ocultaMuestra(){
  15.    for(i=0;i<listas.length;i++){
  16.        listas[i].onclick = function(){
  17.           ocultaOMuestra(listas[i]);  
  18.        }
  19.    }
  20. }
  21.  
  22.  
  23. window.onload = function(){
  24.     valorText();
  25.     ocultaMuestra();
  26. }

en realidad en la primera funcion estoy algo perdido, ya que quero acceder al nodo padre (que es un elemento de lista) desde 'listaDosUno' (que es un enlace) y despues acceder hacia el segundo nodo hijo que esta al lado del enlace (una lista desordenada), y en realidad estoy un poco perdido porque pienso que las cosas deberian salir y no lo hacen je je, ¿me ayudan? ¿o me pueden explicar cual es el problema con childNodes y parentNode en mi script?

gracias
  #2 (permalink)  
Antiguo 23/01/2011, 17:39
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: problema con el DOM

La primera función está bien, pero listas[i] es un string...
Saludos :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 23/01/2011, 18:10
Avatar de Lord_Jose  
Fecha de Ingreso: abril-2010
Ubicación: El antiguo estado federal de Honduras
Mensajes: 20
Antigüedad: 14 años
Puntos: 1
Respuesta: problema con el DOM

ahh, eso lo habia solucionado antes pero de la rabia lo habia borrado todo y lo volvi a hacer con ese error.

Código Javascript:
Ver original
  1. function ocultaMuestra(){
  2.    for(i=0;i<listas.length;i++){
  3.        li = document.getElementById(listas[i]);
  4.        li.onclick = function(){
  5.           ocultaOMuestra(listas[i]);  
  6.        }
  7.    }
  8. }

sin embargo sigue dandome un error:

Error: document.getElementById(capas) is null
Línea: 21 (en este caso linea 3)

ahora que lo depuro con un par de 'alerts' mi array esta indefinido incluso desde la segunda funcion:

Código Javascript:
Ver original
  1. function ocultaMuestra(){
  2.    for(i=0;i<listas.length;i++){
  3.        listas[i].onclick = function(){
  4.           ocultaOMuestra(listas[i]);  
  5.  
  6.           alert(listas[i]);
  7.  
  8. /* me alerta 'undefined' cuando deberia alertarme alguno de estos:
  9. listas[0] = 'listaDosUno';
  10. listas[1] = 'listaDosDos';
  11. listas[2] = 'listaDosTres';
  12. */
  13.        }
  14.    }
  15. }

x cierto, gracias por la respuesta

Etiquetas: dom
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 19:25.