2011-04-21 63 views
18

有人知道如何在JavaScript中清空div的内容(而不销毁它)吗?如何清空div的内容

感谢,

布鲁诺

+0

通过jscript?只是通过使其不可见?你想要什么? – ITroubs 2011-04-21 12:42:19

+0

使用JavaScript?和jQuery? – 2011-04-21 12:42:23

+0

谢谢大家的回答! – Bruno 2011-04-21 12:56:05

回答

38

如果你的DIV是这样的:

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

然后此Javascript:

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

将使它看起来像THI S:

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

+2

工作很好。这个从div删除JS(在我的情况下是一个OpenLayers地图),而$('#example')。empty();没有删除JS。 – 2014-08-26 20:57:01

+1

谢谢。它在2017年也适用于我! – 2017-06-09 09:26:36

+0

破坏它。 – JackHasaKeyboard 2017-09-13 02:17:34

8

如果你正在使用jQuery ...

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

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

他在javascript中问的不是jquery。 – easwee 2011-04-21 12:44:03

1

在jQuery中这将是这么简单$('#yourDivID').empty()

documentation

+1

原来的问题没有引用jquery。请停止假设基本的JavaScript操作需要某种外部库用于每个简单的任务。 – mopsyd 2016-04-04 17:30:29

+0

@mopsyd哦,男孩,这是否需要5年后的答案? :) jQuery在2011年是有点标准的,对于你的信息它仍然被广泛使用。 jQuery是javascript btw。如果你不知道...... – 2016-04-05 06:49:58

+0

so'document.querySelector(“#myDiv”)。InnerHTML =“”;' – mopsyd 2016-04-05 19:04:22

3

如果说不破坏它,你的意思是一个不断给孩子们一个参考,你可以这样做:

var oldChildren = []; 

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

关于你的问题的原标签(html css):

您无法使用CSS删除内容。你只能隐藏它。例如。你可以隐藏某个节点的所有孩子:

#someID > * { 
    display: none; 
} 

这并不工作在IE6虽然(但你可以使用#someID *)。

0

的另一种方式做到这一点是:

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

但是,使用document.getElementById('myDiv').innerHtml = "";更快。

参见:Benchmark test

注:

两种方法都保留div。

+1

我误读了那个测试?对于所有浏览器来说,第一种方法的操作数更高,这意味着它的速度更快。第二种方式更慢,更复杂。 – pucky124 2017-09-13 02:28:02

+0

不,你说得对。我误解了这一点。我每秒误操作总时间。我会更新我的答案。 – 2017-09-13 10:47:28