Foros del Web » Programando para Internet » Javascript »

Bucles y removeChild

Estas en el tema de Bucles y removeChild en el foro de Javascript en Foros del Web. Antes que nada, saludos a todos. Hace algún tiempo que leo el foro pero este es mi primer tema creado. Tengo el siguiente código HTML: ...
  #1 (permalink)  
Antiguo 17/05/2010, 12:26
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Sonrisa Bucles y removeChild

Antes que nada, saludos a todos. Hace algún tiempo que leo el foro pero este es mi primer tema creado.

Tengo el siguiente código HTML:
Código HTML:
<ol>
<li>Primer elemento</li>
<li>Segundo elemento</li>
<li>Tercer elemento</li>
</ol> 
Lo que necesito es eliminar todos los elementos <li> con la excepción del primero, para obtener algo así:
Código HTML:
<ol>
<li>Primer elemento</li>
</ol> 
Pero nisiquiera logro recorrer todos los elementos para eliminarlos.
Ya he probado con las siguientes funciones pero lamentablemente ninguna ha logrado los resultados esperados:
Código:
// Primer intento
function restartForm() {
	var lis = document.getElementsByTagName('li');
	while(lis.lenght > 1) lis.parentNode.removeChild(lis.parentNode.lastChild);
}
// Segundo intento
function restartForm() {
	var liElement;
	var elements = document.getElementsByTagName('li');
	for(liElement in elements) {
		liElement.parentNode.removeChild(liElement);
	}
}
No creo que sea algo difícil de solucionar pero soy realmente nuevo en JS.
Saludos y muchas gracias!

Última edición por runonce86; 17/05/2010 a las 12:29 Razón: Typo
  #2 (permalink)  
Antiguo 17/05/2010, 12:43
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: Bucles y removeChild

en el primero intento lo que te falla es que no estas indicando un elemento en particular de la lista de nodos. o sea, fijate en la siguiente linea.
Código:
while(lis.lenght > 1) lis.parentNode.removeChild(lis.parentNode.lastChild);
la lista de nodos en si no contiene referencia directa al elemento en particular, son sus indices los que representan el nodo.

del segundo intento tienes que tener cuidado porque for/in no solo hace referencia al indice, sino que tambien a las propiedades y metodos. de modo que cuando lee una propiedad o metodo, dentro de esta intenta buscar la propiedad parentNode el cual existe explicitamente para los nodos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 17/05/2010 a las 13:20
  #3 (permalink)  
Antiguo 17/05/2010, 13:14
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Bucles y removeChild

Muchas gracias, Zero! Me costó pero finalmente encontré una solución:
Código:
function restartForm() {
	var lis = document.getElementsByTagName('li');
	var ol = document.getElementsByTagName('ul')[0];
	while(lis.length > 1) ol.removeChild(ol.lastChild);
}
¿Qué les parece?

Etiquetas: bucles, removechild
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 17:24.