Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Eliminar div si vacíos

Estas en el tema de Eliminar div si vacíos en el foro de Javascript en Foros del Web. Hola a todos. Buscando la forma de ocultar divs vacíos, tengo esto que me funciona: Código: <script> var mydiv=document.getElementById('eldivencuestion'); if(!mydiv.hasChildNodes()){mydiv.style.display='none'} </script> También tengo otra variante ...
  #1 (permalink)  
Antiguo 03/12/2016, 17:19
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Eliminar div si vacíos

Hola a todos.

Buscando la forma de ocultar divs vacíos, tengo esto que me funciona:

Código:
<script>
var mydiv=document.getElementById('eldivencuestion');
if(!mydiv.hasChildNodes()){mydiv.style.display='none'}
</script>
También tengo otra variante donde lo que hace es eliminar completamente el div vacío.

Pero se trata de divs así:

Código:
<div id="eldivquesea"></div>
Que no me han planteado problema hasta ahora.

El problema viene con este otro, producto de dejar en blanco un campo de texto en un formulario.

Código:
<div id="eldivquesea">
-
</div>
Ya sabemos que no es lo mismo espacios que vacío total. Así, con este otro div no me funciona el código de arriba, como es lógico.

Código:
<div id="eldivquesea">    </div>
Y además, el div en cuestión tiene un guión.

¿Se puede hacer con javascript puro? Sin jQuery quiero decir.

Gracias.
  #2 (permalink)  
Antiguo 03/12/2016, 19:18
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Eliminar div si vacíos

Claro. Podrías utilizar un patrón de búsqueda y, de no coincidir el contenido con lo que definiste que debe tener un <div> para que no se le considere vacío, lo ocultas o eliminas. Básicamente tendrás que utilizar expresiones regulares y los métodos que JavaScript ofrece para trabajar con ellas.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 03/12/2016, 22:51
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Eliminar div si vacíos

Con jQuery ocultas los elementos que contengan unicamente espacios en blanco
Código Javascript:
Ver original
  1. $('div').each(function(){
  2.     var str = $(this).text();
  3.     var re = new RegExp("^ +?$");
  4.   if(re.test(str)){
  5.     $(this).css('display', 'none');
  6.   }
  7. });

y con CSS ocultas los elementos que estén completamente vacíos
Código CSS:
Ver original
  1. div:empty{display:none;}
  #4 (permalink)  
Antiguo 04/12/2016, 03:41
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Eliminar div si vacíos

Hola.

En principio no quiero utilizar jQuery.

Primero quito los espacios en blanco con css y luego elimino todo el div si contiene el guión.

Me funciona, pero quiero saber qué os parece porque yo soy un novato y no estoy seguro.

Código:
    
document.getElementById("eldivencuestion").style.whiteSpace = "nowrap";
if (document.getElementById('eldivencuestion').innerHTML.indexOf("-") != -1) { 
document.getElementById("eldivencuestion").remove();
}
Gracias.
  #5 (permalink)  
Antiguo 04/12/2016, 14:08
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar div si vacíos

No se si es correcto:

Código Javascript:
Ver original
  1. function hide(){
  2. var ds = document.getElementsByTagName("div");
  3.     for(var k=0;k<ds.length;k++){
  4.         if(ds[k].innerHTML == ""){
  5.         ds[k].style.display="none";
  6.         }
  7.     }
  8. }
  #6 (permalink)  
Antiguo 04/12/2016, 14:23
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Eliminar div si vacíos

Sí, funciona.

Gracias.

Etiquetas: funcion, text
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:56.