假设我选择了一个元素,这是一种老式的方法(或者可以获得DOM引用的任何其他方式):
var el = document.getElementById('myFavoriteElement');然后从DOM中删除该元素的父元素,从而也删除el。或者我直接删除el。
是否有一种方法可以检查el是否仍然是一个有效的引用,它所引用的HTML是否仍然存在于DOM中?类似于el.hasBeenDestroyed的布尔属性之类的东西?
发布于 2015-06-25 19:18:45
如果元素位于DOM页面上,则将填充baseURI属性。看看那个。
或者,尝试document.body.contains(node)。
编辑:现在在2022年,DOM节点isConnected只读属性提供了这些信息。我的实验表明,即使从DOM中删除,baseURI属性仍然是填充的。
发布于 2015-06-25 19:26:30
只要找个家长就行了。
function hasBeenDestroyed(el){ return !el.parentNode; }演示
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; }#myDiv{ padding: 1em; background: red; }<button id="destroyBtn">Destroy the div</button>
<button id="checkBtn">Check if div still exists</button>
<div id="myDiv"></div>
发布于 2015-06-25 19:30:14
下面是一个使用document.contains(el);的示例。
function removeSpan()
{
var el = document.getElementById("test");
el.parentNode.removeChild(el);
document.getElementById("exist").innerHTML = document.contains(el);
}<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>
https://stackoverflow.com/questions/31058739
复制相似问题