如何检查对象是否是DOM元素?

时间:2011-01-21 00:01:04

标签: javascript dom

我有一个功能:

function Check(o)
{
    alert(/* o is a DOM element ? "true" : "false" */);
}

如何检查参数o是否是DOM对象?

6 个答案:

答案 0 :(得分:65)

DOM元素实现Element接口。所以你可以使用:

function Check(o) {
    alert(o instanceof Element);
}

答案 1 :(得分:25)

检查nodeName属性是否存在。

基本检查它是否为Node:查看DOM lvl 1 specs,检查节点定义。

如果您在说Element tagName function Check(o) { alert(o.tagName ? "true" : "false"); } 属性时确实意味着它,请查看相同规范中的元素定义

所以回顾一下,做任何一个

function Check(o)
{
    alert(o.nodeName ? "true" : "false" );
}

检查它是否是DOM元素或

{{1}}

检查它是否是DOM节点

答案 2 :(得分:9)

我不会检查是否存在属性,而是检查其特定值。

这假设您正在寻找“类型1”元素。

nodeType at MDC(docs)

function Check(o) {
    alert( o && o.nodeType && o.nodeType === 1 );
}

您仍然可以获得一个具有nodeType属性但实际上不是DOM节点的对象,但它也必须具有匹配值1才能产生误报。< / p>

答案 3 :(得分:4)

迟到的答案,但文档片段也可以是一个节点:

function isNode(node) {
    return node && (node.nodeType === 1 || node.nodeType == 11);
}

致谢:https://github.com/k-gun/so/blob/4.8.1/so.dom.js#L50

答案 4 :(得分:0)

您可以使用以下功能

function isNode(o)
{
  return o && 'nodeType' in o;
}

答案 5 :(得分:0)

您可以检查DOM节点是否是带有JQuery的元素:

element.is("*")