Javascript 如何检查DOM引用是否已被销毁?

Javascript 如何检查DOM引用是否已被销毁?,javascript,dom,Javascript,Dom,假设我以老式方式或任何其他方式选择一个元素,通过这种方式可以获得DOM引用: 然后我从DOM中删除该元素的父元素,从而也删除了el。或者我直接移除el 有没有办法检查el是否仍然是有效的引用,它引用的HTML是否仍然存在于DOM中?如果元素位于DOM页面上,则会填充baseURI属性。检查一下 或者,尝试document.body.containsnode。您无法检查它是否已被销毁,但可以检查它是否仍在文档节点中 function inDocument(el) { var parentN

假设我以老式方式或任何其他方式选择一个元素,通过这种方式可以获得DOM引用:

然后我从DOM中删除该元素的父元素,从而也删除了el。或者我直接移除el

有没有办法检查el是否仍然是有效的引用,它引用的HTML是否仍然存在于DOM中?如果元素位于DOM页面上,则会填充baseURI属性。检查一下


或者,尝试document.body.containsnode。

您无法检查它是否已被销毁,但可以检查它是否仍在文档节点中

function inDocument(el) {
    var parentNode = el.parentNode;
    while (parentNode) {
        if (parentNode === document) {
            return true;
        }
        parentNode = parentNode.parentNode;
    }
    return false;
}

只要找一个父母

function hasBeenDestroyed(el){ return !el.parentNode; }
演示 var el=document.getElementById'myDiv'; getElementById'destroyBtn'.onclick=function{el.outerHTML=;}; document.getElementById'checkBtn'.onclick=function{ 如果已经发出“分区已被摧毁”的警报; 否则警告“div还在这里”; }; 函数hasBeenDestroyedel{return!el.parentNode;} myDiv{填充:1em;背景:红色;} 摧毁这个部门 检查div是否仍然存在 下面是一个使用document.containsel;的示例

函数移除span { var el=document.getElementByIdtest; el.parentNode.removeChildel; document.getElementByIdexist.innerHTML=document.containsel; } 这是一个div,这是一个span 删除跨度
跨度存在吗?true@blex不,那不行。如果删除el,对el的引用仍然存在。document.containsel;?其他答案中的一个更可靠、更具语义,但只是为了好玩,我注意到getBoundingClientRect在移除后通常会更改为{0,0,0}。元素可以有parentNode,但不能在文档中。例如,如果您有一个不在文档中但仅作为DOM对象的,并且它有一个,则它有一个parentNode。他不会询问它是否在文档中。他在问这个元素或者它的祖先是否已经被摧毁了。那完全不同。但是我明白你的意思,是的,这个函数在这种情况下是无效的。当然,但是你可以简化这个过程,说,而el{if el==document返回true;el=el.parentNode;}.Works。也可能比document.contains更有效。
function hasBeenDestroyed(el){ return !el.parentNode; }