我希望使用instanceof运算符检查传递给我的函数的参数是否是HTMLElement。我知道这在IE7中不起作用,因为AFAIK IE7没有定义HTMLElement。我想:没问题,我会回到像Node那样的父原型。但是,当StackOverflow的答案向我学习时,Node-object也未在IE7中定义
现在测试我的参数是节点/ HTMLElement的最佳方法是什么?我做错了吗?
答案 0 :(得分:2)
在节点接口HTMLElement
对应于类型1的节点。
const unsigned short ELEMENT_NODE = 1;
http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1841493061
因此,您应该检查参数的nodeType
:
if (arg && 1 === arg.nodeType) { /* ... */ }
答案 1 :(得分:0)
我已经很久没用过IE7了,但是我会用if (typeof elementNode == 'element')
查看
它可能是'element'或'HTMLElement'。要确保首先执行alert(typeof elementNode);
以了解其类型。那么你可以比较它。
编辑:第一位评论者澄清了↑这不应该有效。
然后我会尝试检查是否有像nodeType或nodeName这样的成员。
也许像if (elementNode.nodeName !== null)
这样的例子。始终尝试提醒()。