【发布时间】:2011-04-21 12:40:18
【问题描述】:
有人知道如何在 JavaScript 中清空 div 的内容(而不破坏它)吗?
谢谢,
布鲁诺
【问题讨论】:
-
通过 jscript?只是让它不可见?你到底想要什么?
-
感谢大家的回答!
标签: javascript html
有人知道如何在 JavaScript 中清空 div 的内容(而不破坏它)吗?
谢谢,
布鲁诺
【问题讨论】:
标签: javascript html
如果你的 div 看起来像这样:
<div id="MyDiv">content in here</div>
然后这个Javascript:
document.getElementById("MyDiv").innerHTML = "";
会让它看起来像这样:
<div id="MyDiv"></div>
【讨论】:
如果你使用 jQuery ...
$('div').html('');
或
$('div').empty();
【讨论】:
另一种方法是:
var div = document.getElementById('myDiv');
while(div.firstChild)
div.removeChild(div.firstChild);
但是,使用document.getElementById('myDiv').innerHTML = ""; 更快。
注意
这两种方法都保留了 div。
【讨论】:
如果说而不破坏它,你的意思是保留对孩子的引用,你可以这样做:
var oldChildren = [];
while(element.hasChildNodes()) {
oldChildren.push(element.removeChild(element.firstChild));
}
关于您问题的原始标记(html css):
您不能使用 CSS 删除内容。你只能隐藏它。例如。您可以使用以下方法隐藏某个节点的所有子节点:
#someID > * {
display: none;
}
这在 IE6 中不起作用(但您可以使用 #someID *)。
【讨论】:
在 jQuery 中它就像 $('#yourDivID').empty() 一样简单
请参阅documentation。
【讨论】:
document.querySelector("#myDiv").InnerHTML = "";也是如此
这个方法最适合我:
Element.prototype.remove = function() {
this.parentElement.removeChild(this);
}
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
for(var i = this.length - 1; i >= 0; i--) {
if(this[i] && this[i].parentElement) {
this[i].parentElement.removeChild(this[i]);
}
}
}
要使用它,我们可以这样部署:
document.getElementsByID('DIV_Id').remove();
或
document.getElementsByClassName('DIV_Class').remove();
【讨论】:
你可以.remove()每个孩子:
const div = document.querySelector('div.my-div')
while(div.firstChild) div.firstChild.remove()
【讨论】:
您可以使用以下方法清空 DOM:
const el = document.getElementById("MyDiv");
while (el.firstChild) {
el.removeChild(el.firstChild);
}
这应该比传统使用的方法更快:document.getElementById("MyDiv").innerHTML = "";
【讨论】: