JS检查变量是否为dom元素

问题原因

在封装一个动画方法中我需要根据用户传入的参数去选择DOM元素,当用户传入字符串的时,方法内部进行选择DOM 。当用户传入对象时检查是否为DOM对象。

判断一个对象是否 DOM ,首先想到的是它是否具有 DOM 对象的各种属性或特征,比如是否有 nodeType 属性,有 tagName 属性,等等。判断的特征越多,也就越可靠,但毕竟我们自定义的 js 对象也可以有那些属性。

在 DOM Level2 标准中定义了一个 HTMLElement 对象,它规定所有的 DOM 对象都是 HTMLElement 的实例,所以可以通过 HTMLElement 进行判断。但在低版本浏览器中不支持。以下是兼容写法

解决方法

var isDOM =
  typeof HTMLElement === 'object'
    ? function(dom) {
        return dom instanceof HTMLElement;
      }
    : function(dom) {
        return dom && typeof obj === 'object' && obj.nodeType === 1 && typeof 	obj.nodeName === 'string';
      };
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值