首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查DOM引用是否已被销毁?

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

Stack Overflow用户
提问于 2015-06-25 19:06:03
回答 4查看 2.5K关注 0票数 7

假设我选择了一个元素,这是一种老式的方法(或者可以获得DOM引用的任何其他方式):

代码语言:javascript
复制
var el = document.getElementById('myFavoriteElement');

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

是否有一种方法可以检查el是否仍然是一个有效的引用,它所引用的HTML是否仍然存在于DOM中?类似于el.hasBeenDestroyed的布尔属性之类的东西?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-25 19:18:45

如果元素位于DOM页面上,则将填充baseURI属性。看看那个。

或者,尝试document.body.contains(node)

编辑:现在在2022年,DOM节点isConnected只读属性提供了这些信息。我的实验表明,即使从DOM中删除,baseURI属性仍然是填充的。

票数 3
EN

Stack Overflow用户

发布于 2015-06-25 19:26:30

只要找个家长就行了。

代码语言:javascript
复制
function hasBeenDestroyed(el){ return !el.parentNode; }

演示

代码语言:javascript
复制
var el = document.getElementById('myDiv');
document.getElementById('destroyBtn').onclick = function(){ el.outerHTML = ''; };
document.getElementById('checkBtn').onclick = function(){
    if( hasBeenDestroyed(el) ) alert('The div has been destroyed');
    else alert('The div is still here');
};

function hasBeenDestroyed(el){ return !el.parentNode; }
代码语言:javascript
复制
#myDiv{ padding: 1em; background: red; }
代码语言:javascript
复制
<button id="destroyBtn">Destroy the div</button>
<button id="checkBtn">Check if div still exists</button>

<div id="myDiv"></div>

票数 1
EN

Stack Overflow用户

发布于 2015-06-25 19:30:14

下面是一个使用document.contains(el);的示例。

代码语言:javascript
复制
function removeSpan()
{
  var el = document.getElementById("test");
  el.parentNode.removeChild(el);
  document.getElementById("exist").innerHTML = document.contains(el);
}
代码语言:javascript
复制
<div>This is a div. <span id="test">This is a span</span></div>
<button type="button" onclick="removeSpan();">Remove span</button>
<div>Does the span exist? <span id="exist">true</span></div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31058739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档