Eu preciso de uma maneira de determinar o tipo de um elemento HTML em JavaScript. Ele possui o ID, mas o elemento em si pode ser a <div>, um <form>campo, um <fieldset>etc. Como posso conseguir isso?
Eu preciso de uma maneira de determinar o tipo de um elemento HTML em JavaScript. Ele possui o ID, mas o elemento em si pode ser a <div>, um <form>campo, um <fieldset>etc. Como posso conseguir isso?
Respostas:
nodeNameé o atributo que você está procurando. Por exemplo:
var elt = document.getElementById('foo');
console.log(elt.nodeName);
Observe que nodeNameretorna o nome do elemento em maiúsculas e sem os colchetes angulares, o que significa que, se você quiser verificar se um elemento é um <div>elemento, poderá fazê-lo da seguinte maneira:
elt.nodeName == "DIV"
Embora isso não lhe dê os resultados esperados:
elt.nodeName == "<div>"
if (elt.nodeName && elt.nodeName.toLowerCase() === 'div') { ... }
localName?
Que tal element.tagName?
Veja também tagNamedocumentos sobre o MDN .
Você pode usar a inspeção de código genérico via instanceof:
var e = document.getElementById('#my-element');
if (e instanceof HTMLInputElement) {} // <input>
elseif (e instanceof HTMLSelectElement) {} // <select>
elseif (e instanceof HTMLTextAreaElement) {} // <textarea>
elseif ( ... ) {} // any interface
Procure aqui uma lista completa de interfaces.