web-dev-qa-db-fra.com

Comment vérifier si l'objet est un élément DOM?

J'ai une fonction:

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

Comment puis-je vérifier si le paramètre o est un objet DOM ou non?

31
BrunoLM

Un élément DOM implémente l'interface Element. Pour que vous puissiez utiliser:

function Check(o) {
    alert(o instanceof Element);
}
61
David Hellsing

Vérifiez si la propriété nodeName existe.

En gros, vérifiez s’il s’agit d’une variable Node: examinez les spécifications DOM lvl 1 , vérifiez la définition du noeud.

Si vous le vouliez littéralement lorsque vous avez dit Element rechercher la propriété tagName, examinez la définition de l'élément dans la même spécification.

Donc, pour récapituler, soit

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

vérifier s'il s'agit d'un élément DOM ou

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

vérifier s'il s'agit d'un nœud DOM

25
Martin Jespersen

Au lieu de simplement vérifier l'existence d'une propriété, je vérifierais sa valeur spécifique.

Cela suppose que vous recherchiez un élément de "type 1".

nodeType at MDC(docs)

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

Vous pouvez toujours obtenir un objet ayant la propriété nodeType qui ne soit pas réellement un nœud DOM, mais il devrait également avoir une valeur correspondante de 1 pour donner un faux positif.

9
user113716

Réponse tardive, mais un fragment de document pourrait également être un nœud:

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

Crédits: https://github.com/k-gun/so/blob/4.8.1/so.dom.js#L50

4
K-Gun

Vous pouvez vérifier si un nœud DOM est un élément avec JQuery:

element.is("*")
0
zhy2002

Vous pouvez utiliser la fonction suivante

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