如何判断元素是否为HTMLElement元素
如何 判断 是否 元素
2023-06-13 09:15:13 时间
我们经常使用nodeType==1判断元素是否是一个HMTLElement元素。页面上的元素都是节点(Node),有元素节点(ElementNode)、属性节点(AttributeNode)、文本节点(TextNode)等。w3cnodeType的定义如下
constunsignedshortELEMENT_NODE=1;
constunsignedshortATTRIBUTE_NODE=2;
constunsignedshortTEXT_NODE=3;
constunsignedshortCDATA_SECTION_NODE=4;
constunsignedshortENTITY_REFERENCE_NODE=5;
constunsignedshortENTITY_NODE=6;
constunsignedshortPROCESSING_INSTRUCTION_NODE=7;
constunsignedshortCOMMENT_NODE=8;
constunsignedshortDOCUMENT_NODE=9;
constunsignedshortDOCUMENT_TYPE_NODE=10;
constunsignedshortDOCUMENT_FRAGMENT_NODE=11;
constunsignedshortNOTATION_NODE=12;
但如果我们自定义的对象也包含nodeType属性呢?如
varobj={nodeType:1};
functionisHTMLElement(obj){
if(obj.nodeType){
returnobj.nodeType==1;
}
}
isHTMLElement(obj);//true
以上isHTMLElement(obj)返回true,但obj明显不是一个HTML节点元素。下面通过对象特性及try-catch语句来判断。
functionisHTMLElement(obj){
vard=document.createElement("div");
try{
d.appendChild(obj.cloneNode(true));
returnobj.nodeType==1?true:false;
}catch(e){
returnfalse;
}
}
varobj1={nodeType:1};
varobj2=document.createTextNode("hello");
varobj2=document.createElement("p");
isHTMLElement(obj1);//false
isHTMLElement(obj2);//false
isHTMLElement(obj3);//true
对于window和document还要特别处理下
functionisHtmlControl(obj){
vard=document.createElement("div");
try{
d.appendChild(obj.cloneNode(true));
returnobj.nodeType==1?true:false;
}catch(e){
returnobj==window||obj==document;
}
}
相关文章
- 如何判断数组中是否含有某个元素的个数_数组有多少个元素怎么计算
- PostgreSQL如何判断字符串是否包含目标字符串的方法
- mysql 如何判断 “字符串” 是否为 “数字”详解数据库
- 是否存在如何使用Oracle检查值是否存在(oracle判断值)
- Linux下如何判断一个字符是否为数字(linux判断是否为数字)
- 如何判断你的 Python 代码实现是否合适?
- 如何在亿级数据中判断一个元素是否存在?
- 如何通过mysql判断表是否存在?(mysql判断表存在)
- Oracle如何判断记录是否存在?——25字(oracle判断记录存在)
- 如何利用Oracle判断是否符合条件:简易指南(oracle判断是否)
- MySQL中如何判断空值(mysql中判断空)
- MySQL时间比较函数如何判断某一时间是否在另一时间之前或之后(mysql中判断时间前后)
- Oracle如何快速判断一个数是否为正数(oracle. 正数)
- 如何判断图片地址是否失效
- 如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方?
- 如何判断php数组的维度