Existe-t-il un moyen de tester le type d'un élément en JavaScript?
La réponse peut nécessiter ou non la bibliothèque prototype, mais la configuration suivante utilise la bibliothèque.
function(event) {
var element = event.element();
// if the element is an anchor
...
// if the element is a td
...
}
javascript
prototypejs
Casey Watson
la source
la source
element.nodeName.match(/\bTBODY\b/i)
ouelement.nodeName.toLowerCase() == 'tbody'
etc.Vous devrez peut-être également vérifier le type de nœud:
Edit: Correction de la valeur nodeType
la source
text/html
.)element.tagName.toLowerCase() === 'a'
element.nodeName.toLowerCase()
s'il est possible que ceelement
ne soit pas réellement un élément (par exemple, si vous n'avez pas effectué lanodeType == 1
vérification ci-dessus). L'Node
interface anodeName
. Pour lesElement
exemples, c'est la même chose quetagName
. Pour les autres types de nœuds, ce sont des choses comme"#text"
ou"#document"
. Je pense que j'utiliserais toujours lenodeType
chèque, cependant.node.tagName == 'DIV'
roenving est correct MAIS vous devez changer le test en:
car nodeType de 3 est en fait un nœud de texte et nodeType de 1 est un élément HTML. Voir http://www.w3schools.com/Dom/dom_nodetype.asp
la source
Je l'obtiens généralement à partir de la valeur de retour toString (). Il fonctionne dans les éléments DOM accessibles différemment:
Puis la pièce pertinente:
Il fonctionne dans Chrome, FF, Opera, Edge, IE9 + (dans l'ancien IE, il renvoie "[objet objet]").
la source
Bien que les réponses précédentes fonctionnent parfaitement, je vais simplement ajouter une autre façon où les éléments peuvent également être classés à l'aide de l'interface qu'ils ont implémentée.
Référez-vous à W3 Org pour les interfaces disponibles
La vérification de l'interface peut être effectuée de 2 façons au fur
elem instanceof HTMLAnchorElement
et à mesure que leselem.constructor.name == "HTMLAnchorElement"
deux retourstrue
la source
J'ai une autre façon de tester la même chose.
la source