Tengo una función:¿Cómo comprobar si el objeto es un elemento DOM?
function Check(o)
{
alert(/* o is a DOM element ? "true" : "false" */);
}
¿Cómo puedo comprobar si el parámetro o
es un objeto DOM o no?
Tengo una función:¿Cómo comprobar si el objeto es un elemento DOM?
function Check(o)
{
alert(/* o is a DOM element ? "true" : "false" */);
}
¿Cómo puedo comprobar si el parámetro o
es un objeto DOM o no?
Un elemento DOM implementa la interfaz Element
. Por lo que podría hacer:
function Check(o) {
alert(o instanceof Element);
}
Esta es la mejor respuesta hasta el momento. – geoyws
Compruebe si existe la propiedad nodeName
.
Básicamente comprobar si es un Node
: mira el DOM lvl 1 specs, comprueba la definición del nodo.
Si decía literalmente cuando dijo Element
cheque por tagName
propiedad, mira el Definición de elementos de la misma especificación
Así que para recapitular, realice una
function Check(o)
{
alert(o.tagName ? "true" : "false");
}
para comprobar si se trata de una DOM Elemento o
function Check(o)
{
alert(o.nodeName ? "true" : "false");
}
para comprobar si se trata de un nodo DOM
o 'nodeType', o lo que sea, es una propiedad del objeto raíz' DOMElement'. –
Esto no suena a prueba de balas. ¿Qué pasa si hay un objeto con ese nombre de propiedad? ¿Es esa la única forma? Pensé que podría haber algo más ... – BrunoLM
Bueno, puede hacer que sea más seguro comprobando todas (o al menos dos o tres) las propiedades y métodos que esos objetos necesitan para cumplir con las especificaciones, pero parece exagerado ... –
Usted puede usar la siguiente función
function isNode(o)
{
return o && 'nodeType' in o;
}
Creo que debería ser ''nodeType' en o', pero ¡buena idea! –
@BenRowe: Nate Barr tiene razón, ''nodeType'' debe estar entre comillas, si no, su código lleva a _" ReferenceError: nodeType is not defined "_, ¡por favor edite su publicación! – Sk8erPeter
Gracias, haré el ajuste –
En lugar de sólo la comprobación de la existencia de una propiedad, me gustaría comprobar su valor específico.
Esto supone que está buscando un elemento "tipo 1".
function Check(o) {
alert(o && o.nodeType && o.nodeType === 1);
}
Aún se podía obtener un objeto que tiene la propiedad nodeType
que no es en realidad un nodo DOM, pero también tendría que tener un valor coincidente de 1
para dar un falso positivo.
Una versión más corta sería: obj && obj.nodeType === 1 – Meglio
respuesta tardía, pero un fragmento de documento podría ser un nodo así:
function isNode(node) {
return node && (node.nodeType === 1 || node.nodeType == 11);
}
Créditos: https://github.com/k-gun/so/blob/4.8.1/so.dom.js#L50
se puede comprobar si un nodo DOM es un elemento con JQuery:
element.is("*")
Cualquier nodo DOM o un tipo particular de nodo? – user113716
@patrick Cualquiera. Para buscar uno específico, simplemente podría verificar tagName ¿verdad? – BrunoLM
No, el 'tagName' dará el tipo de un elemento" tipo 1 ". Hay muchos otros tipos de nodos. – user113716