Existe uma maneira de testar o tipo de um elemento em JavaScript?
A resposta pode ou não exigir a biblioteca de protótipos, no entanto, a configuração a seguir faz uso da biblioteca.
function(event) {
var element = event.element();
// if the element is an anchor
...
// if the element is a td
...
}
javascript
prototypejs
Casey Watson
fonte
fonte
element.nodeName.match(/\bTBODY\b/i)
ouelement.nodeName.toLowerCase() == 'tbody'
etc.Talvez você precise verificar o tipo de nó também:
Editar: corrigido o valor nodeType
fonte
text/html
.)element.tagName.toLowerCase() === 'a'
element.nodeName.toLowerCase()
se for possívelelement
, não será realmente um elemento (por exemplo, se você não fez anodeType == 1
verificação listada acima). ANode
interface temnodeName
. PorElement
exemplo, é o mesmo quetagName
. Para outros tipos de nós, é algo como"#text"
ou"#document"
. Mas acho que sempre usaria onodeType
cheque.node.tagName == 'DIV'
roenving está correto, MAS você precisa alterar o teste para:
porque nodeType de 3 é na verdade um nó de texto e nodeType de 1 é um elemento HTML. Consulte http://www.w3schools.com/Dom/dom_nodetype.asp
fonte
Normalmente, eu pego no valor de retorno toString (). Funciona em elementos DOM acessados de forma diferente:
Então, a peça relevante:
Funciona no Chrome, FF, Opera, Edge, IE9 + (no IE mais antigo retorna "[object Object]").
fonte
Embora as respostas anteriores funcionem perfeitamente, vou apenas adicionar outra maneira em que os elementos também podem ser classificados usando a interface que eles implementaram.
Consulte W3 Org para interfaces disponíveis
A verificação da interface pode ser feita de 2 maneiras
elem instanceof HTMLAnchorElement
ouelem.constructor.name == "HTMLAnchorElement"
, ambos os retornostrue
fonte
Eu tenho outra maneira de testar o mesmo.
fonte