如何检查可见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变量的行为感兴趣。
噜噜哒
明月笑刀无情
犯罪嫌疑人X
相关分类