如何判断出一个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中清空数组的三种方法分享
Apr 07 Javascript
jQuery中$.fn的用法示例介绍
Nov 05 Javascript
Javascript操作URL函数修改版
Nov 07 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
以Python代码实例展示kNN算法的实际运用
Oct 26 Javascript
JS实现在状态栏显示打字效果完整实例
Nov 02 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
基于JavaScript实现表格滚动分页
Nov 22 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
Feb 21 Javascript
JS实现移动端触屏拖拽功能
Jul 31 Javascript
微信小程序实现自定义底部导航
Nov 18 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中执行cmd命令的方法
2014/10/11 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
domReady的实现案例
2016/11/23 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Php多进程实现代码
2018/05/07 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
失业者真诚求职信范文
2013/12/25 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
社会心理学学习心得体会
2016/01/22 职场文书