如何判断出一个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 相关文章推荐
HTML中事件触发列表与解说
Jul 09 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
Sep 29 Javascript
JQuery EasyUI 对话框的使用方法
Oct 24 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
Oct 11 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
Jun 13 Javascript
jquery实现滑动图片自己测试的例子
Nov 05 Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 Javascript
vue渲染时闪烁{{}}的问题及解决方法
Mar 28 Javascript
浅谈Postman解决token传参的问题
Mar 31 Javascript
vue data对象重新赋值无效(未更改)的解决方式
Jul 24 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 eval函数用法总结
2012/10/31 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
Python中的self用法详解
2019/08/06 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
"引用"与多态的关系
2013/02/01 面试题
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
初一生物教学反思
2014/01/18 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
学校周年庆活动方案
2014/08/22 职场文书
校园广播稿100字
2014/10/06 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
学雷锋日活动总结
2015/02/06 职场文书
合同纠纷调解书
2015/05/20 职场文书
话题作文之诚信
2019/11/28 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js