2011-04-21 31 views
18

¿Alguien sabe cómo vaciar el contenido de un div (sin destruirlo) en JavaScript?Cómo vaciar el contenido de un div

Gracias,

Bruno

+0

mediante jscript? solo haciendo que no sea visible? exactamente, que es lo que quieres? – ITroubs

+0

con JavaScript? y jQuery? –

+0

¡Gracias a todos por sus respuestas! – Bruno

Respuesta

38

Si el div se ve así:

<div id="MyDiv">content in here</div>

Entonces este Javascript:

document.getElementById("MyDiv").innerHTML = "";

hará que se vea como Thi s:

<div id="MyDiv"></div>

+2

funcionó muy bien. Esto eliminó JS (un mapa OpenLayers en mi caso) de la div mientras que $ ('# ejemplo') vacía (.); no eliminó JS. –

+1

Gracias. ¡Me funcionó en 2017 también! –

+0

Eso lo destruye. – JackHasaKeyboard

8

Si estás usando jQuery ...

$('div').html(''); 

o

$('div').empty(); 
+1

Preguntó en javascript no jquery. – easwee

1

En jQuery sería tan simple como $('#yourDivID').empty()

Ver el documentation.

+1

La pregunta original no hace referencia a jquery. Deje de suponer que las operaciones básicas de javascript requieren algún tipo de biblioteca externa para cada tarea simple. – mopsyd

+0

@mopsyd oh chico, ¿es esto necesario 5 años después de la respuesta? :) jQuery fue una especie de estándar en 2011 y para su información todavía se usa ampliamente. jQuery es javascript por cierto. si no sabía ... –

+0

también lo era 'document.querySelector (" # myDiv "). InnerHTML =" ";' – mopsyd

3

Si diciendo sin destruirlo, que quiere decir a una mantener una referencia a los niños, que puede hacer:

var oldChildren = []; 

while(element.hasChildNodes()) { 
    oldChildren.push(element.removeChild(element.firstChild)); 
} 

En cuanto al etiquetado originales (html css) de su pregunta:

No puede eliminar contenido con CSS. Solo puedes esconderlo. P.ej. puede ocultar todos los niños de un determinado nodo con:

#someID > * { 
    display: none; 
} 

Esto no funciona en IE6 aunque (pero se puede usar #someID *).

0

Una forma alternativa de hacerlo es:

var div = document.getElementById('myDiv'); 
while(div.firstChild) 
    div.removeChild(div.firstChild); 

Sin embargo, utilizando document.getElementById('myDiv').innerHtml = ""; es más rápido.

Ver: Benchmark test

N. B.

Ambos métodos preservan la div.

+1

¿Estoy malinterpretando esa prueba? Para todos los navegadores, la primera forma tiene mayores ops/seg, lo que significa que es más rápido. La segunda forma es más lenta y complicada. – pucky124

+0

No, tienes razón. Lo leí mal Me equivoqué operaciones por segundo, por tiempo total. Actualizaré mi respuesta. –

Cuestiones relacionadas