2017-08-27 40 views
0

我试图在JavaScript中实现一段代码,它以一种在执行代码后为空的方式删除了div内的所有子节点。我正在考虑使用while循环和应用于此div的hasChildNodes()方法,并且在循环的参数内插入一行代码,该代码行将在每次检查中删除此div的第一个子项,直到它删除所有子节点,但是我觉得很麻烦。有没有更快的方式来摆脱div内的所有元素使用某种方法?如何在一次使用javascript执行代码行之后以空格删除div中的所有子节点?

+0

你打算继续在专区内的文本?如果不是,你可以设置'div.innerHTML =“”'。 – Nisarg

+0

太棒了!这正是我期待的那种答案。只是一个单独的线离开div空。谢谢。 –

回答

3

Jquery的$ .html()方法。

像这样:

$('#parent').html(''); 

的所有子元素内将与 '' 代替;

$('div').children().each(function(index){ 
    $(this).remove(); 
}); 
2

一个选项,如果你不使用如jQuery的库,道场或使用SVG或事件的子节点:

var node = document.getElementById("foo"); 
node.innerHTML = ""; 

如果您使用的是像道场库或jQuery,那么你将避免内存泄漏,因为从JavaScript的子节点的引用不清除,所以dom节点永远不会被释放。

始终使用适当的库方法清除DOM,以便它可以释放事件注册,节点引用例如jQuery:api.jquery.com/empty

1

如果您打算使用子节点和文本清除div,则可以将其innerHTML设置为空文本。

var target = document.getElementById("target"); 
 
setTimeout(function() { 
 
    target.innerHTML = ""; 
 
},3000);
The text below will disappear after three seconds. 
 
<div id="target"> 
 
    Some text. 
 
    <div> 
 
    Some text inside a child node. 
 
    </div> 
 
</div>

相关问题