Jak mogę określić typ elementu HTML w JavaScript?


190

Potrzebuję sposobu, aby określić typ elementu HTML w JavaScript. To ma identyfikator, ale sam element może być <div>, o <form>pole, <fieldset>itp jaki sposób można to osiągnąć?

Odpowiedzi:


290

nodeNameto atrybut, którego szukasz. Na przykład:

var elt = document.getElementById('foo');
console.log(elt.nodeName);

Zwróć uwagę, że nodeNamezwraca nazwę elementu wielkimi literami i bez nawiasów kątowych, co oznacza, że ​​jeśli chcesz sprawdzić, czy element jest <div>elementem, możesz to zrobić w następujący sposób:

elt.nodeName == "DIV"

Chociaż nie dałoby to oczekiwanych rezultatów:

elt.nodeName == "<div>"

29
Polecam zrobić to w ten sposób: jeśli (elt.nodeName.toLowerCase () === "div") {...} W ten sposób, jeśli z jakiegoś powodu nie jest już zwracany wielkimi literami (małe lub mieszane), ty nie będę musiał tego zmieniać, a ten kod nadal będzie działał poprawnie.
TheCuBeMan

6
W odpowiedzi na @TheCuBeMan użycie toLowerCase () oznacza, że ​​musisz także upewnić się, że nodeName istnieje (jeśli to w ogóle możliwe, elt nie jest w rzeczywistości elementem):if (elt.nodeName && elt.nodeName.toLowerCase() === 'div') { ... }
Erik Koopmans

co localName?
bomba


7

Czasem chcesz element.constructor.name

document.createElement('div').constructor.name
// HTMLDivElement

document.createElement('a').constructor.name
// HTMLAnchorElement

document.createElement('foo').constructor.name
// HTMLUnknownElement

7

Możesz użyć ogólnej kontroli kodu poprzez 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

Zajrzyj tutaj, aby uzyskać pełną listę interfejsów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.