如何判断出一个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不同页面传值的改进版
Sep 30 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
Nov 30 Javascript
浅析Javascript使用include/require
Nov 13 Javascript
JavaScript实现网页截图功能
Oct 16 Javascript
javascript 对象数组根据对象object key的值排序
Mar 09 Javascript
JavaScript使用concat连接数组的方法
Apr 06 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
Jun 10 Javascript
jquery中checkbox使用方法简单实例演示
Nov 24 Javascript
JavaScript实现的搜索及高亮显示功能示例
Aug 14 Javascript
AngularJS路由删除#符号解决的办法
Sep 28 Javascript
记一次webpack3升级webpack4的踩坑经历
Jun 12 Javascript
浅析vue-router中params和query的区别
Dec 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 expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python字符串的一些操作方法总结
2019/06/10 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
Python绘制动态水球图过程详解
2020/06/03 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
StringBuilder和String的区别
2015/05/18 面试题
期末总结的个人自我评价
2013/11/02 职场文书
高中综合实践活动总结
2014/07/07 职场文书
领导干部保密承诺书
2014/08/30 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
审美与表现自我评价
2015/03/09 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python