Foros del Web » Programando para Internet » Javascript »

cambiar contenido de un elemento

Estas en el tema de cambiar contenido de un elemento en el foro de Javascript en Foros del Web. Tengo un ul @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < ul id = "lista" class = "lista" >   < li >< a > Elemento ...
  #1 (permalink)  
Antiguo 07/04/2012, 15:46
 
Fecha de Ingreso: mayo-2011
Mensajes: 171
Antigüedad: 13 años
Puntos: 32
Pregunta cambiar contenido de un elemento

Tengo un ul
Código HTML:
Ver original
  1. <ul id="lista" class="lista">
  2.   <li><a>Elemento 1</a></li>
  3.   <li><a>Elemento 2</a></li>
  4.   <li><a>Elemento 3</a></li>
  5.   <li><a>Elemento 4</a></li>
  6.   ...
  7. </ul>

la cual capturo con javascript:
Código Javascript:
Ver original
  1. var lista =  document.getElementById('lista'); // exactamente así-> s('.lista')[0]; "pero al final hace la llamada al elemento  de igual forma"
  2.  
  3. // luego capturos sus hijos
  4.  var hijosLista = lista.getElementsByTagName('li');
  5.  
  6. // y antes de continuar cambio el valor de la lista a un solo elemento "cargando"
  7.  
  8. lista.innerHTML = '<li>Cargando..</li>'
  9.  
  10. //y sigo con lo demas
  11.  
  12. ....
  13.  
  14. console.log(hijosLista );


el problema esta que al cambiar el contenido de la Lista, lugo al entrar a la variable hijosLista ella me devuelve -> <li>Cargando..</li>, y no lo que la lista tenia antes..


¿ello por que sucede....? >>
  #2 (permalink)  
Antiguo 07/04/2012, 16:13
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: cambiar contenido de un elemento

¡buenas!
sucede porque estás modificando el contenido del elemento. cuando obtienes los elementos por getElementsByTagName no obtienes una copia de dichos elementos. por el contrario obtienes una lista (o colección) de elementos a partir de un elemento. esa colección, aunque parece ser un objeto fijo, en realidad es un objeto dinámico o activo que devuelve los elementos de acuerdo al estado actual del elemento donde se invoca el método. digamos que tiene cierta similitud a un evento, solo que en lugar de ser activado por una acción en particular, el objeto siempre está pendiente de cualquier cambio que ocurra en el elemento principal (en tu caso UL).

para que puedas entenderlo, imagina un elemento UL vacío. obtienes la colección de elementos LI a partir del elemento UL. cuando verificas la longitud (length), indica 0. luego agregas 3 elementos LI. vuelve a verificar la lontigud de elementos (sin invocar getElementsByTagName) desde la misma colección anterior. esta vez devuelve 3.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: contenido, incluir, listas
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:14.