我知道访问和操作DOM可能非常耗费时间,因此我希望尽可能高效地完成这项任务。我的情况是某个div始终包含一个项目列表,但有时我想用完全不同的项目列表来刷新该列表。在这种情况下,我可以构建新列表并将其附加到该div,但我还需要清除旧列表。什么是最好的方法?将innerHTML设置为空字符串?迭代子节点并调用“removeChild”?还是其他方法?
将 innerHTML 设置为空字符串。
强调可能会很昂贵。实际上,当处理少量元素时,它可能是微不足道的。请记住,优化应该始终在最后进行,并且仅在您具有可证明的证据表明您想要改进的特定方面确实是您的性能瓶颈之后才进行。
如果可能的话,我建议避免搞乱innerHTML;这很容易出错,并对DOM做一些难以优雅地恢复的事情。
对于99.9%的情况,此方法非常快,除非您从DOM中删除大量层次结构块:
while(ele.childNodes.length > 0) {
ele.removeChild(ele.childNodes[ele.childNodes.length - 1])
}