Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/02/2007, 07:05
Avatar de Bellenger
Bellenger
 
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años, 2 meses
Puntos: 4
Borrar Elementos creados con DOM

Hola a todos los foreros, nuevamente molestando, estoy desarrollando una web, y para ello estoy implementando algunas funcionalidades de la misma con DOM, paso a explicar mejor. utilizo un codigo para crear una tabla com dom y sus botones respectivos, hasta qui todo bien, este es el codigo que utilizo:
Código:
function crearCeldaInput(TBody, Columnas){
  var elmTBODY = document.getElementById(TBody);
  var elmTR;
  var elmTD;
  var elmText;
  var elmButton;  
  var Titulo;
  var Ancho;
  var Item=0;
  var ItemButton=0;
  var Manejador;
  var Estado;
	elmTR = document.createElement('TR');
	 for (Item = 0; Item <= Columnas; Item++) { 
		elmTD = document.createElement('Td');	
		elmTD.setAttribute("bgcolor", '#EFF8F1');
		if (Item<Columnas){
			switch(Item){
				case 0: Ancho=48; break;
				case 1: Ancho=33; break;					
				case 2: Ancho=2; break;				
			}

			elmText = document.createElement('input');	
			elmText.setAttribute('name', 'txtdato');
			elmText.setAttribute('id', 'txtdato'+ ContadorFilas + Item);
			arrFilas[arrFilas.length]=ContadorFilas;
			elmText.size = Ancho;
			elmTD.width = Ancho;			
	        elmTD.appendChild(elmText);						
		} 
		if (Item==Columnas){
			for (ItemButton=0; ItemButton<3; ItemButton++){
				elmButton = document.createElement('input');
				elmButton.setAttribute('type', 'button');
				elmButton.setAttribute('name', 'btnOpcion');				
				elmButton.setAttribute('id', 'btnOpcion'+ ContadorFilas + ItemButton);	
				//elmButton.setAttribute('data', ContadorFilas);
				switch(ItemButton){
					case 0: 
						Titulo="M"; 
						Manejador = modificarHermano;	
						Estado = true;
						break;
					case 1: 
						Titulo='G'; 
						Manejador = guardarHermano;
						Estado = false;
						break;					
					case 2: 
						Titulo='E'; 
						Manejador = eliminarHermano;				
						Estado = true;
						break;				
				}
				elmButton.addEventListener('click', Manejador, true);
			
				elmButton.setAttribute('value', Titulo);
				elmTD.appendChild(elmButton);					
			}
		}	
		elmTR.appendChild(elmTD);
     }
     elmTBODY.insertBefore(elmTR,elmTBODY.childNodes[Columnas]);
	 //elmTBODY.appendChild(elmTBODY.childNodes[Columnas]);
	 alert(elmTBODY.length);
	 ContadorFilas++;
	 Item=0;
	 ItemButton=0;
	 Nodos++;
	 if (ContadorFilas>0){
		 restaurarOpciones();
	 }
}
como dije, hasta aqui todo bien el problema surge cuando intento borrar los Elementos creados, para ello utilizo este codigo:
Código:
function quitarCelda(Componente, ID){
	//elmTBODY.removeChild(elmTBODY.childNodes[ID]);
	document.getElementById(Componente).removeChild(document.getElementById(Componente).childNodes[ID]);
}
todo bien hasta aqui, ya que si deseo eliminar uno por uno los elementos creado me funciona, el detalle surge al momento de borrar todo de una sola vez, para ello implemente un boton que me permitiera hacer esto, y para ello utilizo el siguiente codigo:
Código:
function quitarLista(){
	var Indice=0;	
	if (ContadorFilas==0){ return; }
	//alert("com"+ContadorFilas);
//	
	//alert(document.getElementById());
	//document.getElementById(Componente).removeChild(document.getElementById(Componente).childNodes[ID]);	
	//alert(document.getElementById('CuerpoTabla').length)
	for (Indice = ContadorFilas; Indice >=0; Indice--){
		//alert("aaa"+Indice);		
		quitarCelda('CuerpoTabla', Indice);
	}
	ContadorFilas=0;
	alert(ContadorFilas);
	return;
}
Bueno, cuando ejecuto todo la primera vez funciona, todo ok, explico la forma como lo ejecuto:
1. cargo la pagina
2. creo los elementos de la tabla (text y botones)
3. cancelo (la opcion que me debe borrar todo los elementos creados en paso 2)
4. vuelvo a crear los elementos.
5. vuelvo a cancelar, y es a qui donde surge el problema que simplemente ya no borra.
ahora si me dicen por que utilizo el for en reversa, bueno es que elimino desde el ultimo, lo use de forma ascendente, pero siempre me quedaba uno y si volvia agregar me quedaba dos, y asi, al final me quedaba algun elemento creado extra, alguien que sepa como poder eliminar este problema de ante mano gracias por su ayuda, seguie investigando tambien