如何判断出一个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 相关文章推荐
编辑浪子版表单验证类
May 12 Javascript
IE和Mozilla的兼容性汇总event
Aug 12 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
May 10 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
May 14 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
Apr 22 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
vue基于Element构建自定义树的示例代码
Sep 19 Javascript
js 取消页面可以选中文字的功能方法
Jan 02 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
arctext.js实现文字平滑弯曲弧形效果的插件
May 13 Javascript
教你如何用Node实现API的转发(某音乐)
Sep 20 Javascript
JavaScript中isPrototypeOf函数
Nov 07 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文件读写操作之文件写入代码
2011/01/13 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
document.getElementById介绍
2011/09/13 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python的时间模块datetime详解
2017/04/17 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
社区学雷锋活动策划方案
2014/01/30 职场文书
移风易俗倡议书
2014/04/15 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
教师素质教育心得体会
2016/01/19 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python