删除所有子节点

Dam*_*mir 10 javascript dojo

如何删除所有子节点<div id="test"></div>使用Dojo或纯JavaScript?

jor*_*aul 28

虽然使用el.innerHTML =""很有吸引力,但通常这种方法有效,但更正确的方法是:

var el = document.getElementById('test');
while( el.hasChildNodes() ){
    el.removeChild(el.lastChild);
}
Run Code Online (Sandbox Code Playgroud)

这是因为IE真的讨厌使用innerHTML进行表操作(这在MSDN的某处记录).

编辑:找到MSDN参考:http://msdn.microsoft.com/en-us/library/ms532998%28v=vs.85%29.aspx#TOM_Create

  • `hasChildNodes()`更容易阅读IMO. (2认同)

Ste*_*ung 15

dojo.empty(node) 将保留节点,从节点中删除所有子节点.

dojo.destroy(node) 将从节点中删除所有子节点,然后从其父节点中删除该节点.


MiP*_*mic 9

是你需要的:

dojo.empty("someId");


Lal*_*and 6

document.getElementById('yourDivID').innerHTML="";
Run Code Online (Sandbox Code Playgroud)

  • 我怀疑你还没有完全测试过.正如微软在[MSDN]上自己的文档(http://msdn.microsoft.com/en-us/library/ms532998%28v=vs.85%29.aspx#TOM_Create)所报告的那样:"_因为所需的特定结构table,table和tr对象的innerText和innerHTML属性是只读的.要插入行和单元格,更改表格的内容和属性,或者调整表格元素的大小,你必须使用DOM._"换句话说,依靠'el.innerHTML =""`如果你不完全理解它可能是危险的. (2认同)