如何判断出一个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 相关文章推荐
JavaScript中Math对象使用说明
Jan 16 Javascript
让你的网站可编辑的实现js代码
Oct 19 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
JavaScript禁止页面操作的示例代码
Dec 17 Javascript
javascript获取web应用根目录的方法
Feb 12 Javascript
JavaScript原生对象之Date对象的属性和方法详解
Mar 13 Javascript
fastclick插件导致日期(input[type=&quot;date&quot;])控件无法被触发该如何解决
Nov 09 Javascript
js实现的彩色方块飞舞奇幻效果
Jan 27 Javascript
Bootstrap CSS布局之表单
Dec 17 Javascript
vue组件(全局,局部,动态加载组件)
Sep 02 Javascript
基于JavaScript 实现拖放功能
Sep 12 Javascript
基于js实现判断浏览器类型代码实例
Jul 17 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
基于mysql的bbs设计(一)
2006/10/09 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
vue中v-for循环给标签属性赋值的方法
2018/10/18 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
Python random模块常用方法
2014/11/03 Python
Python中的装饰器用法详解
2015/01/14 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
Sanic框架路由用法实例分析
2018/07/16 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
《鞋匠的儿子》教学反思
2014/03/02 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python