如何检查可见 DOM 中是否存在元素?
如何在不使用该方法的情况下测试元素的存在?getElementById
我设置了一个现场演示以供参考。我还将在此处打印代码:
<!DOCTYPE html>
<html>
<head>
<script>
var getRandomID = function (size) {
var str = "",
i = 0,
chars = "0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";
while (i < size) {
str += chars.substr(Math.floor(Math.random() * 62), 1);
i++;
}
return str;
},
isNull = function (element) {
var randomID = getRandomID(12),
savedID = (element.id)? element.id : null;
element.id = randomID;
var foundElm = document.getElementById(randomID);
element.removeAttribute('id');
if (savedID !== null) {
element.id = savedID;
}
return (foundElm) ? false : true;
};
window.onload = function () {
var image = document.getElementById("demo");
console.log('undefined', (typeof image === 'undefined') ? true : false); // false
console.log('null', (image === null) ? true : false); // false
console.log('find-by-id', isNull(image)); // false
image.parentNode.removeChild(image);
console.log('undefined', (typeof image === 'undefined') ? true : false); // false ~ should be true?
console.log('null', (image === null) ? true : false); // false ~ should be true?
console.log('find-by-id', isNull(image)); // true ~ correct but there must be a better way than this?
};
</script>
</head>
<body>
<div id="demo"></div>
</body>
</html>
基本上,上面的代码演示了一个元素被存储到变量中,然后从DOM中删除。即使元素已从 DOM 中删除,变量也会保留元素首次声明时的状态。换句话说,它不是对元素本身的实时引用,而是复制品。因此,检查变量的值(元素)是否存在将提供意外结果。
该函数是我试图从变量中检查元素是否存在的,并且它有效,但我想知道是否有更简单的方法来完成相同的结果。isNull
PS:如果有人知道一些与该主题相关的好文章,我也对为什么JavaScript变量表现得这样感兴趣。