javascript - 检查页面中是否呈现了 javascript DOM 元素
问题描述
我正在尝试检查 html 页面中是否存在 DOM js 元素。像这样的东西:
var a = document.querySelector('div'),
b = document.createElement('div');
var f = () => {
// some code
}
<div>hello world</div>
本质上,做f(a)
应该返回true
,但做f(b)
应该返回false
。
这可能吗?谢谢。
解决方案
您可以使用该contains
方法来执行此操作,在document
.
const
a = document.querySelector('div'),
b = document.createElement('div');
const f = element => {
return document.contains(element);
};
console.log(f(a)); // true
console.log(f(b)); // false
<div>hello world</div>
或者,您可以跟随元素parentNode
直到它是null
(没有进一步的父级)或者它是document
:
const
a = document.querySelector('div'),
b = document.createElement('div');
const f = node => {
let inDom = false;
while (node && node.parentNode) {
if (node.parentNode === document) {
inDom = true;
break;
}
node = node.parentNode;
}
return inDom;
};
console.log(f(a)); // true
console.log(f(b)); // false
<div>hello world</div>
推荐阅读
- python - 如何从具有位置(X,Y)和强度的点加速创建图像?
- java - 是否可以在@Repository 中调用服务?
- java - Tomcat 端口已使用 8084
- f# - F# Saturn 框架:“get”和“forward”有什么区别?
- c# - 在方法上实现扩展(就好像它是一个动作)
- python - 将 numpy 数组转换为 panda 数据帧,dtypes 丢失
- javascript - 有没有办法在 react-testing-library 中使用 fireEvent 在“span”上触发点击事件?
- r - 从多面画布中分离`facet_grid`条?
- java - 将日历实例转换为 java.sql.Timestamp 的有效方法
- android - 如何在底部导航栏顶部显示 FloatingActionButton