我试图从Firefox中的DOM中删除一个除法元素(一个模态窗口)。
我第一次删除模态窗口;一切正常。当我第二次打开窗户并尝试将其移除时;这是行不通的。
具体来说,我收到一条错误消息,指出无法找到模态窗口的父元素。
父元素是document.body,我尝试使用parentNode.removeChild()和parentNode.replaceChild()。但是,我在Chrome或Internet Explorer 8中没有任何问题。
从DOM中删除节点的正确/防弹方法是什么?
HTML:
<body>
<!--The modal window:!-->
<div id="modalwin"></div>
<!--An overlay division stacked behind the
modal window using CSS z-index: !-->
<div id="uiOverlay"></div>
<!--The listener:!-->
<a href="#" onClick='Delete(modalwin); Delete(uiOverlay); return false;' />
</body>
Javascript
Delete: function (elem) {
if (!elem) {
return false;
}
var blank = document.createTextNode(' ');
try {
var ref = elem.parentNode.replaceChild(blank, elem);
} catch (err) {
elem.style.display = "none";
}
// return true;
},
Firebug错误
NotFound错误:找不到节点 (未找到的节点是document.body /模态窗口分区的父节点)
答案 0 :(得分:1)
删除元素后,它仍然存在,但没有父节点。它可以附在别处,或者只是丢弃并留给垃圾收集器进行清理。
因此,一旦您在元素上调用Delete
一次,再次调用它将尝试删除已经删除的节点,该节点将失败。