如何判断出一个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 删除字符串空格多种方法小结
Oct 24 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
Mar 31 Javascript
Javascript浅谈之引用类型
Dec 18 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
JS访问SWF的函数用法实例
Jul 01 Javascript
基于jquery实现的仿优酷图片轮播特效代码
Jan 13 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
Jun 17 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
Mar 08 Javascript
node操作mysql数据库实例详解
Mar 17 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
Aug 31 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 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快递单号查询接口使用示例
2014/05/05 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
php DES加密算法实例分析
2019/09/18 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
Python中的类与对象之描述符详解
2015/03/27 Python
python使用urlparse分析网址中域名的方法
2015/04/15 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python选课系统开发程序
2016/09/02 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
python下载图片实现方法(超简单)
2017/07/21 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
python配置文件写入过程详解
2019/10/19 Python
python实现井字棋小游戏
2020/03/04 Python
python 实现的车牌识别项目
2021/01/25 Python
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
亿企通软件测试面试题
2012/04/10 面试题
优秀小学生事迹材料
2014/12/26 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python