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?
Un élément DOM implémente l'interface Element
. Pour que vous puissiez utiliser:
function Check(o) {
alert(o instanceof Element);
}
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
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".
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.
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
Vous pouvez vérifier si un nœud DOM est un élément avec JQuery:
element.is("*")
Vous pouvez utiliser la fonction suivante
function isNode(o)
{
return o && 'nodeType' in o;
}