如何判断元素是否为HTMLElement元素
时间:2024-04-18 10:15:27
我们经常使用nodeType==1判断元素是否是一个HMTLElement元素。页面上的元素都是节点(Node),有元素节点(Element Node)、属性节点(Attribute Node)、文本节点(Text Node)等。w3c nodeType 的定义如下
const unsigned short ELEMENT_NODE = 1;
const unsigned short ATTRIBUTE_NODE = 2;
const unsigned short TEXT_NODE = 3;
const unsigned short CDATA_SECTION_NODE = 4;
const unsigned short ENTITY_REFERENCE_NODE = 5;
const unsigned short ENTITY_NODE = 6;
const unsigned short PROCESSING_INSTRUCTION_NODE = 7;
const unsigned short COMMENT_NODE = 8;
const unsigned short DOCUMENT_NODE = 9;
const unsigned short DOCUMENT_TYPE_NODE = 10;
const unsigned short DOCUMENT_FRAGMENT_NODE = 11;
const unsigned short NOTATION_NODE = 12;
但如果我们自定义的对象也包含nodeType属性呢?如
var obj = {nodeType:1};
function isHTMLElement(obj){
if(obj.nodeType){
return obj.nodeType==1;
}
}
isHTMLElement(obj);//true
以上isHTMLElement(obj)返回true,但obj明显不是一个HTML节点元素。下面通过对象特性及try-catch语句来判断。
function isHTMLElement(obj){
var d = document.createElement("div");
try{
d.appendChild(obj.cloneNode(true));
return obj.nodeType==1?true:false;
}catch(e){
return false;
}
}
var obj1 = {nodeType:1};
var obj2 = document.createTextNode("hello");
var obj2 = document.createElement("p");
isHTMLElement(obj1);//false
isHTMLElement(obj2);//false
isHTMLElement(obj3);//true
对于window和document还要特别处理下
function isHtmlControl(obj) {
var d = document.createElement("div");
try{
d.appendChild(obj.cloneNode(true));
return obj.nodeType==1 ? true : false;
}catch(e){
return obj==window || obj==document;
}
}
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
使用Python读写多个sheet文件
![](https://img.aspxhome.com/file/2023/2/131372_0s.png)
Python 高级变量之字典和字符串详解
python OpenCV学习笔记
![](https://img.aspxhome.com/file/2023/9/127789_0s.jpg)
Web 2.0 框架发布
![](https://img.aspxhome.com/file/UploadPic/20083/25/200832595359766s.jpg)
将tf.batch_matmul替换成tf.matmul的实现
![](https://img.aspxhome.com/file/2023/7/124787_0s.jpg)
Python+PyQt5实现开发Memcached客户端
Python编程实现数学运算求一元二次方程的实根算法示例
![](https://img.aspxhome.com/file/2023/4/62254_0s.jpg)
asp 页面允许CACHE的方法
Django通过设置CORS解决跨域问题
mysql下mysql-udf-http效率测试小记
关于utf-8格式中截取中英文字符串长度无效的问题
监测站点使用多少session和application的asp程序
谈一谈基于python的面向对象编程基础
![](https://img.aspxhome.com/file/2023/3/63543_0s.png)
Python常用标准库详解(pickle序列化和JSON序列化)
网页新窗口打开好不好,数据说话
![](https://img.aspxhome.com/file/UploadPic/up/2008053117181324.gif)
MySQL的主从复制原理详细分析
![](https://img.aspxhome.com/file/2023/3/76373_0s.png)
Django实战之用户认证(初始配置)
Python的三种主要模块介绍
SpringBoot整合Mysql和Redis的详细过程
![](https://img.aspxhome.com/file/2023/6/101786_0s.png)
matplotlib基本图形绘制操作实例
![](https://img.aspxhome.com/file/2023/1/64231_0s.png)