如何连续删除Firefox中的DOM节点?

时间:2013-01-26 21:00:27

标签: javascript firefox removechild

我试图从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 /模态窗口分区的父节点)

1 个答案:

答案 0 :(得分:1)

删除元素后,它仍然存在,但没有父节点。它可以附在别处,或者只是丢弃并留给垃圾收集器进行清理。

因此,一旦您在元素上调用Delete一次,再次调用它将尝试删除已经删除的节点,该节点将失败。