Javascript 如何检查对象是否为 DOM 元素?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4754088/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to check if object is a DOM element?
提问by BrunoLM
I have a function:
我有一个功能:
function Check(o)
{
alert(/* o is a DOM element ? "true" : "false" */);
}
How can I check if the parameter o
is a DOM object or not?
如何检查参数o
是否为 DOM 对象?
回答by David Hellsing
A DOM element implements the Element
interface. So you can use:
DOM 元素实现该Element
接口。所以你可以使用:
function Check(o) {
alert(o instanceof Element);
}
回答by Martin Jespersen
Check if the nodeName
property exists.
检查该nodeName
属性是否存在。
Basically check if it is a Node
: look at the DOM lvl 1 specs, check the Node definition.
基本上检查它是否是Node
:查看DOM lvl 1 规范,检查节点定义。
If you meant it literally when you said Element
check for tagName
property, look at the Element definition in the same spec
如果您说Element
检查tagName
属性时是字面意思,请查看同一规范中的 Element 定义
So to recap, do either
所以回顾一下,要么做
function Check(o)
{
alert(o.tagName ? "true" : "false");
}
to check if it is a DOM Element or
检查它是否是 DOM 元素或
function Check(o)
{
alert(o.nodeName ? "true" : "false" );
}
to check if it is a DOM Node
检查它是否是一个 DOM 节点
回答by user113716
Instead of just checking for the existence of a property, I'd check its specific value.
我不只是检查属性是否存在,而是检查其特定值。
This assumes you're looking for a "type 1" element.
这假设您正在寻找“类型 1”元素。
function Check(o) {
alert( o && o.nodeType && o.nodeType === 1 );
}
You could still get an object that has the nodeType
property that isn't actually a DOM node, but it would also have to have a matching value of 1
to give a false positive.
您仍然可以获得一个对象,该对象具有nodeType
实际上不是 DOM 节点的属性,但它也必须具有匹配的值1
才能给出误报。
回答by K-Gun
Late answer, but a document fragment could be a node as well:
迟到的答案,但文档片段也可以是一个节点:
function isNode(node) {
return node && (node.nodeType === 1 || node.nodeType == 11);
}
Credits: https://github.com/k-gun/so/blob/4.8.1/so.dom.js#L50
回答by zhy2002
You can check if a DOM node is element with JQuery:
您可以使用 JQuery 检查 DOM 节点是否为元素:
element.is("*")
回答by Ben Rowe
You can use the following function
您可以使用以下功能
function isNode(o)
{
return o && 'nodeType' in o;
}