Código:
como dije, hasta aqui todo bien el problema surge cuando intento borrar los Elementos creados, para ello utilizo este codigo: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(); } }
Código:
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:function quitarCelda(Componente, ID){ //elmTBODY.removeChild(elmTBODY.childNodes[ID]); document.getElementById(Componente).removeChild(document.getElementById(Componente).childNodes[ID]); }
Código:
Bueno, cuando ejecuto todo la primera vez funciona, todo ok, explico la forma como lo ejecuto: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; }
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