0

我正在尝试从 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;
    },

萤火虫错误

NotFound Error: Node was not found(未找到的节点是document.body/模态窗口划分的父节点)

4

1 回答 1

1

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

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

于 2013-01-26T21:03:08.293 回答