我听说简化说document.getElementById('divId').innerHTML = "";
对于通过JS编辑未来的divIde内容是不安全的,那么如何安全地清理div内容呢?
答案 0 :(得分:3)
应该始终如一的是:
var div = document.getElementById('divId');
while(div.hasChildNodes()) {
div.removeChild(div.firstChild);
}
innerHTML
不是任何规范的一部分,但受到浏览器的广泛支持。
答案 1 :(得分:2)
我写了类似于Felix Kling的东西,唯一不同之处在于我想传递id或引用。所以我这样写了:
function removeAllChildNodes(node) {
i = (typeof(node) == "object") ? node : document.getElementById(node);
while (i.hasChildNodes()) {
i.removeChild(i.firstChild);
}
}
答案 2 :(得分:1)
将innerHTML属性设置为nothing将消除指定DIV中的任何DOM节点。没有“安全”的风险。
你可以安全地做到这一点:P
答案 3 :(得分:1)
我相信这是JS框架(如jQuery)的基础......它们针对跨浏览器安全性进行了优化 - 其中包括安全的DOM元素删除,尽管你会失去一点计算速度(设置innerHTML是总是最快的方式)
对于其他想知道安全问题的人来说,有些浏览器(特别是MSIE)存在一些漏洞会导致浏览器崩溃或允许恶意程序在某些条件下在客户端执行,因此设置innerHTML可能不如人们用来思考; - )