Foros del Web » Programando para Internet » Javascript »

borrar div dinamicamente

Estas en el tema de borrar div dinamicamente en el foro de Javascript en Foros del Web. Hola!, os esplico mi problema. Tengo un formulario y en el un checkbox: Código HTML: <input name= "estilo" onclick= "num89++;crear5(this)" type= "checkbox" value= "" /> ...
  #1 (permalink)  
Antiguo 08/02/2010, 06:58
 
Fecha de Ingreso: enero-2009
Mensajes: 23
Antigüedad: 15 años, 10 meses
Puntos: 0
borrar div dinamicamente

Hola!, os esplico mi problema.
Tengo un formulario y en el un checkbox:

Código HTML:
<input name="estilo" onclick="num89++;crear5(this)" type="checkbox" value="" /> 
Al hacer click en el llamo a crear 5 y esta funcion lo que hace es:
1.- comprueba que num89 sea impar, para saber que el check esta checkeado.
2.-crea un select, un text area un boton añadir y un boton borrar en un div llamado fiel5.
3.- en el caso de que num89 sea par (osea se deselecciona el checkbox), se borran los nuevos elementos.

El problema es solo el paso 3, el resto funciona.

Código:
  function crear5(obj) {

	if(num89%2 == 1) {       /*paso 1*/
		if (num5 <= 9) {
   			num5++;
  			fi5 = document.getElementById('fiel5');         /*paso 2*/
  			contenedor5 = document.createElement('div'); 
  			contenedor5.id = 'div'+num5; 
  			fi5.appendChild(contenedor5);
			ele5 = document.createElement('select'); 
			ele5.className = 'impCol';
  			ele5.length = 4;
  			variable = new Option("Ser","0");
		  	ele5.options[0] = variable;
		  	variable = new Option("Ser1","1");
		  	ele5.options[1] = variable;
		  	variable = new Option("Ser2","2");
		  	ele5.options[2] = variable;
		  	variable = new Option("ser3","3");
		  	ele5.options[3] = variable; 
		  	contenedor5.appendChild(ele5);
		  	ele5 = document.createElement('input');
		  	ele5.type = 'button'; 
		  	ele5.value = 'Añadir';
		  	ele5.name = 'div'+num5; 
		  	ele5.className ='impCol';
		  	ele5.onclick = function () {num89=1;crear5(this);num89=2} 
		  	contenedor5.appendChild(ele5);
		  	ele5 = document.createElement('input');
		  	ele5.type = 'button'; 
		  	ele5.value = 'Borrar';
		  	ele5.name = 'div'+num5; 
		  	ele5.className ='impCol';
		  	ele5.onclick = function () {borrar5(this.name)} 
		  	contenedor5.appendChild(ele5); 
		  	ele5 = document.createElement('textarea'); 
		  	ele5.className = 'impCol';
		  	ele5.cols =100;
		  	ele5.rows	= 4;
		  	ele5.maxlength =2000;
		  	contenedor5.appendChild(ele5);
 		}else{
 			alert('maximo de 10 servidores');
 		}	
 	}else if(num89%2 == 0) {                  /*paso 3 donde se encuentra el error*/
  		var i ;
 		for (i=0;i<=num5;i++) {
   			fi5 = document.getElementById('fiel5'); 
  			fi5.removeChild(document.getElementById('div'+num5));
		}
	
	} 
}
function borrar5(obj) {
	num5--;
        fi5 = document.getElementById('fiel5');  
        fi5.removeChild(document.getElementById(obj)); 
}
Supongo que debo estar haciendo algo mal o muy mal, pues en js soy bastante novato y ando algo perdido.
Gracias de antemano por la ayuda!
  #2 (permalink)  
Antiguo 08/02/2010, 08:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: borrar div dinamicamente

Esto perece que funciona??? No entiendo lo que te pasa...

Por cierto

Si obj es un checkbox luego puedes hacer

if (obj.checked) ... true si esta checkeado false si no lo esta

Quim

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. <script language="JavaScript" type="text/JavaScript">
  5. var num89=0;
  6. var num5=0;
  7. function crear5(obj) {
  8.     if(num89%2 == 1) {       /*paso 1*/
  9.         if (num5 <= 9) {
  10.             num5++;
  11.             fi5 = document.getElementById('fiel5');         /*paso 2*/
  12.             contenedor5 = document.createElement('div');
  13.             contenedor5.id = 'div'+num5;
  14.             fi5.appendChild(contenedor5);
  15.             ele5 = document.createElement('select');
  16.             ele5.className = 'impCol';
  17.             ele5.length = 4;
  18.             variable = new Option("Ser","0");
  19.             ele5.options[0] = variable;
  20.             variable = new Option("Ser1","1");
  21.             ele5.options[1] = variable;
  22.             variable = new Option("Ser2","2");
  23.             ele5.options[2] = variable;
  24.             variable = new Option("ser3","3");
  25.             ele5.options[3] = variable;
  26.             contenedor5.appendChild(ele5);
  27.             ele5 = document.createElement('input');
  28.             ele5.type = 'button';
  29.             ele5.value = 'Añadir';
  30.             ele5.name = 'div'+num5;
  31.             ele5.className ='impCol';
  32.             ele5.onclick = function () {num89=1;crear5(this);num89=2}
  33.             contenedor5.appendChild(ele5);
  34.             ele5 = document.createElement('input');
  35.             ele5.type = 'button';
  36.             ele5.value = 'Borrar';
  37.             ele5.name = 'div'+num5;
  38.             ele5.className ='impCol';
  39.             ele5.onclick = function () {borrar5(this.name)}
  40.             contenedor5.appendChild(ele5);
  41.             ele5 = document.createElement('textarea');
  42.             ele5.className = 'impCol';
  43.             ele5.cols =100;
  44.             ele5.rows   = 4;
  45.             ele5.maxlength =2000;
  46.             contenedor5.appendChild(ele5);
  47.         }else{
  48.             alert('maximo de 10 servidores');
  49.         }  
  50.     }else if(num89%2 == 0) {                  /*paso 3 donde se encuentra el error*/
  51.         var i ;
  52.         for (i=0;i<=num5;i++) {
  53.             fi5 = document.getElementById('fiel5');
  54.             fi5.removeChild(document.getElementById('div'+num5));
  55.         }
  56.    
  57.     }
  58. }
  59. function borrar5(obj) {
  60.     num5--;
  61.        fi5 = document.getElementById('fiel5');  
  62.        fi5.removeChild(document.getElementById(obj));
  63. }
  64. </head>
  65. <input name="estilo" onclick="num89++;crear5(this)" type="checkbox" value="" />
  66. <div id="fiel5"></div>
  67. </body>
  68. </html>
  #3 (permalink)  
Antiguo 08/02/2010, 08:24
 
Fecha de Ingreso: enero-2009
Mensajes: 23
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: borrar div dinamicamente

Para empezar gracias por esto:

Cita:
if (obj.checked)
sabia que tenia que poder hacerse de otra forma pero no daba con ello.

Funcionar funciona, borra uno(se lia un poco con el tema de borrarlos y añadirlos si lo haces mucho pero creo q usando el obj,checked eso lo solucionare rapido), el tema es que quiero que borre todos los elementos añadidos no solo el último, de ahí que use un for. Ese es realmente el problema.

Edito....
asi queda con tu linea, soluciona algun fallo que tenia, pero sigue siendo lo mismo solo borra el último, tambien he observado que solo borra tras haber añadido, pero no tras borrar uno, solo coge la última id creada.

Además borra uno, pero firebug me tira error tras borrar, aunque sigue funcionando pero me dice que en la linea: fi5 = document.getElementById('fiel5'); /*aqui*/ hay un invalid pointer

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
var num89=0;
var num5=0; 
  function crear5(obj) {
	if((obj.checked) || (num89 ==1)) {       /*paso 1*/
		if (num5 <= 9) {
     			fi5 = document.getElementById('fiel5');         /*paso 2*/
  			contenedor5 = document.createElement('div'); 
  			contenedor5.id = 'div'+num5; 
  			fi5.appendChild(contenedor5);
			ele5 = document.createElement('select'); 
			ele5.className = 'impCol';
  			ele5.length = 4;
  			variable = new Option("Ser","0");
		  	ele5.options[0] = variable;
		  	variable = new Option("Ser1","1");
		  	ele5.options[1] = variable;
		  	variable = new Option("Ser2","2");
		  	ele5.options[2] = variable;
		  	variable = new Option("ser3","3");
		  	ele5.options[3] = variable; 
		  	contenedor5.appendChild(ele5);
		  	ele5 = document.createElement('input');
		  	ele5.type = 'button'; 
		  	ele5.value = 'Añadir';
		  	ele5.name = 'div'+num5; 
		  	ele5.className ='impCol';
		  	ele5.onclick = function () {num89=1;num5++;crear5(this);num89=0} 
		  	contenedor5.appendChild(ele5);
		  	ele5 = document.createElement('input');
		  	ele5.type = 'button'; 
		  	ele5.value = 'Borrar';
		  	ele5.name = 'div'+num5; 
		  	ele5.className ='impCol';
		  	ele5.onclick = function () {num89=1;borrar5(this.name);num89=0} 
		  	contenedor5.appendChild(ele5); 
		  	ele5 = document.createElement('textarea'); 
		  	ele5.className = 'impCol';
		  	ele5.cols =100;
		  	ele5.rows	= 4;
		  	ele5.maxlength =2000;
		  	contenedor5.appendChild(ele5);
 		}else{
 			alert('maximo de 10 servidores');
 		}	
 	}else  {                  /*paso 3 donde se encuentra el error*/
  		var i ;
 		for (i=0;i<=num5;i++) {
   			fi5 = document.getElementById('fiel5');  /*aqui*/
  			fi5.removeChild(document.getElementById('div'+num5));
		}
	
	} 
}
function borrar5(obj) {
	num5--;
        fi5 = document.getElementById('fiel5');  
        fi5.removeChild(document.getElementById(obj)); 
}
</script>
</head>
<body>
<input name="estilo" onclick="num89++;crear5(this)" type="checkbox" value="" />
<div id="fiel5"></div>
</body>
</html> 

Última edición por molinos; 08/02/2010 a las 08:55
  #4 (permalink)  
Antiguo 09/02/2010, 03:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: borrar div dinamicamente

He cambiado un poco tu estrategia, tenias un problema al intentar acceder secuencialmente a algo que podia no ser secuencial...

Analizalo si no lo entiendes pregunta, se trata de aprender no de que te lo den hecho.

Quim

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. <script language="JavaScript" type="text/JavaScript">
  5.  
  6. var num5=0;
  7. var divs=new Array();
  8.  
  9. function crear5(obj) {
  10.     if(obj.checked) {
  11.              creaObjetos();
  12.     }else{
  13.              borrarTodos();
  14.     }
  15. }
  16.  
  17. function borrarTodos(){
  18.         for (var i=0;i<divs.length;i++) {
  19.             fi5 = document.getElementById('fiel5');
  20.             fi5.removeChild(document.getElementById(divs[i]));
  21.         }
  22.         divs.splice(0,divs.length);
  23. }
  24.  
  25. function borrar5(obj) {
  26.     for (var i=0;i<divs.length;i++){
  27.         if (divs[i]==obj){
  28.             fi5 = document.getElementById('fiel5');  
  29.             fi5.removeChild(document.getElementById(obj));
  30.             break;
  31.         }
  32.         }
  33.     divs.splice(i,1);
  34.     if (divs.length==0) document.getElementById('estilo').checked=false;
  35. }
  36.  
  37. function creaObjetos(){
  38.         if (divs.length <= 9) {
  39.            num5++;
  40.             fi5 = document.getElementById('fiel5');
  41.             contenedor5 = document.createElement('div');
  42.             contenedor5.id = 'div'+num5;
  43.             fi5.appendChild(contenedor5);
  44.             ele5 = document.createElement('select');
  45.             ele5.className = 'impCol';
  46.             ele5.length = 4;
  47.             variable = new Option("Ser","0");
  48.             ele5.options[0] = variable;
  49.             variable = new Option("Ser1","1");
  50.             ele5.options[1] = variable;
  51.             variable = new Option("Ser2","2");
  52.             ele5.options[2] = variable;
  53.             variable = new Option("ser3","3");
  54.             ele5.options[3] = variable;
  55.             contenedor5.appendChild(ele5);
  56.             ele5 = document.createElement('input');
  57.             ele5.type = 'button';
  58.             ele5.value = 'Añadir';
  59.             ele5.name = 'div'+num5;
  60.             ele5.className ='impCol';
  61.             ele5.onclick = function () {creaObjetos();}
  62.             contenedor5.appendChild(ele5);
  63.             ele5 = document.createElement('input');
  64.             ele5.type = 'button';
  65.             ele5.value = 'Borrar';
  66.             ele5.name = 'div'+num5;
  67.             ele5.className ='impCol';
  68.             ele5.onclick = function () {borrar5(this.name);}
  69.             contenedor5.appendChild(ele5);
  70.             ele5 = document.createElement('textarea');
  71.             ele5.className = 'impCol';
  72.             ele5.cols =100;
  73.             ele5.rows   = 4;
  74.             ele5.maxlength =2000;
  75.             contenedor5.appendChild(ele5);
  76.             divs.push('div'+num5);
  77.         }else{
  78.             alert('maximo de 10 servidores');
  79.         }  
  80. }
  81.  
  82.  
  83. </head>
  84. <input name="estilo" id="estilo" onclick="crear5(this)" type="checkbox" value="" />
  85. <div id="fiel5"></div>
  86. </body>
  87. </html>

Última edición por quimfv; 09/02/2010 a las 03:22 Razón: elimino var num89=0;

Etiquetas: borrar, dinamicamente
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 23:19.