如何判断出一个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 相关文章推荐
JQuery用户名校验的具体实现
Mar 18 Javascript
JavaScript核心语法总结(推荐)
Jun 02 Javascript
js实现短信发送倒计时功能(正则验证)
Feb 10 Javascript
BootStrap实现带关闭按钮功能
Feb 15 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
动手写一个angular版本的Message组件的方法
Dec 16 Javascript
如何让node运行es6模块文件及其原理详解
Dec 11 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
详解vue2.0模拟后台json数据
May 16 Javascript
Javascript地址引用代码实例解析
Feb 25 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
PHP+ajax 无刷新删除数据
2010/02/20 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
python 杀死自身进程的实现方法
2019/07/01 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
网吧收银员岗位职责
2013/12/14 职场文书
物业门卫岗位职责
2013/12/28 职场文书
交通文明倡议书
2014/05/16 职场文书
社区班子对照检查材料
2014/08/27 职场文书
新兵入伍心得体会
2014/09/04 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
党支部先进事迹材料
2014/12/24 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS