如何判断出一个js对象是否一个dom对象


Posted in Javascript onNovember 24, 2016

我们在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法。

要判断一个对象是否DOM对象,首先想到的无非就是它是否具有DOM对象的各种属性或特征,比如是否有nodeType属性,有tagName属性,等等。判断的特征越多,也就越可靠,因为毕竟我们自定义的js对象也可以有那些属性。还有其他方法吗?

在DOM Level2标准中定义了一个HTMLElement对象,它规定所有的DOM对象都是HTMLElement的实例,所以我们可以利用这点来判断一个对象是不是DOM对象:如果该对象是HTMLElement的实例,则它肯定是一个DOM对象。在不支持HTMLElement的浏览器中我们则还是使用特征检测法。

<script type="text/javascript">
  //首先要对HTMLElement进行类型检查,因为即使在支持HTMLElement
  //的浏览器中,类型却是有差别的,在Chrome,Opera中HTMLElement的
  //类型为function,此时就不能用它来判断了
  var isDOM = ( typeof HTMLElement === 'object' ) ?
        function(obj){
          return obj instanceof HTMLElement;
        } :
        function(obj){
          return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string';
        }
  </script>

以上就是小编为大家带来的如何判断出一个js对象是否一个dom对象全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
JS实现浏览器菜单命令
Sep 05 Javascript
instanceof和typeof运算符的区别详解
Jan 06 Javascript
用JavaScript实现页面重定向功能的教程
Jun 04 Javascript
jquery自定义表格样式
Nov 23 Javascript
jQuery实现区域打印功能代码详解
Jun 17 Javascript
基于JavaScript实现购物车功能
Feb 07 Javascript
jQuery实现搜索页面关键字的功能
Feb 16 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
Mar 21 Javascript
Mac下安装vue
Apr 11 Javascript
超轻量级的js时间库miment使用解析
Aug 02 Javascript
javascript this指向相关问题及改变方法
Nov 19 Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 #Javascript
纯javascript版日历控件
Nov 24 #Javascript
js通过classname来获取元素的方法
Nov 24 #Javascript
jQuery实现checkbox列表的全选、反选功能
Nov 24 #Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 #Javascript
概述javascript在Google IE中的调试技巧
Nov 24 #Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
Nov 23 #Javascript
You might like
做个自己站内搜索引擎
2006/10/09 PHP
利用PHP实现短域名互转
2013/07/05 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
激活 ActiveX 控件
2006/10/09 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
JS实现简易日历效果
2021/01/25 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
wxPython学习之主框架实例
2014/09/28 Python
Python实现注册登录系统
2017/08/08 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
优秀教师获奖感言
2014/01/31 职场文书
体育课外活动总结
2014/07/08 职场文书
个人委托书范本
2014/09/13 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
领导工作表现评语
2015/01/04 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
python not运算符的实例用法
2021/06/30 Python
原生JS实现分页
2022/04/19 Javascript