¿Hay alguna forma de probar el tipo de un elemento en JavaScript?
La respuesta puede requerir o no la biblioteca de prototipos, sin embargo, la siguiente configuración hace uso de la biblioteca.
function(event) {
var element = event.element();
// if the element is an anchor
...
// if the element is a td
...
}
javascript
prototypejs
Casey Watson
fuente
fuente
element.nodeName.match(/\bTBODY\b/i)
oelement.nodeName.toLowerCase() == 'tbody'
etc.Quizás también tengas que comprobar el tipo de nodo:
Editar: se corrigió el valor de nodeType
fuente
text/html
.)element.tagName.toLowerCase() === 'a'
element.nodeName.toLowerCase()
si es posible que enelement
realidad no sea un elemento (por ejemplo, si no ha realizado lanodeType == 1
verificación mencionada anteriormente). LaNode
interfaz tienenodeName
. PorElement
ejemplo, es lo mismo quetagName
. Para otros tipos de nodos, son cosas como"#text"
o"#document"
. SinnodeType
embargo, creo que siempre usaría el cheque.node.tagName == 'DIV'
roenving es correcto, PERO necesita cambiar la prueba a:
porque nodeType de 3 es en realidad un nodo de texto y nodeType de 1 es un elemento HTML. Ver http://www.w3schools.com/Dom/dom_nodetype.asp
fuente
Normalmente lo obtengo del valor de retorno de toString (). Funciona en elementos DOM de acceso diferente:
Luego la pieza relevante:
Funciona en Chrome, FF, Opera, Edge, IE9 + (en IE más antiguo devuelve "[object Object]").
fuente
Aunque las respuestas anteriores funcionan perfectamente, solo agregaré otra forma en la que los elementos también se pueden clasificar usando la interfaz que han implementado.
Consulte W3 Org para conocer las interfaces disponibles
La verificación de la interfaz se puede realizar de 2 formas como
elem instanceof HTMLAnchorElement
oelem.constructor.name == "HTMLAnchorElement"
ambas devolucionestrue
fuente
Tengo otra forma de probar lo mismo.
fuente