如何确定JavaScript中HTML元素的类型?


190

我需要一种确定JavaScript中HTML元素类型的方法。它具有ID,但是元素本身可以是<div><form>字段,a <fieldset>等。如何实现呢?

Answers:


290

nodeName是您要寻找的属性。例如:

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

请注意,nodeName返回的元素名称为大写且不带尖括号,这意味着如果要检查元素是否为<div>元素,可以按以下方式进行操作:

elt.nodeName == "DIV"

虽然这不会给您预期的结果:

elt.nodeName == "<div>"

29
我建议这样做:if(elt.nodeName.toLowerCase()===“ div”){...}这样,如果由于某种原因它不再以大写字母(小写或混合)返回,无需更改它,此代码仍可以正常工作。
TheCuBeMan 2014年

6
响应@TheCuBeMan,使用toLowerCase()意味着您还需要确保nodeName存在(如果可能的话,elt实际上不是元素):if (elt.nodeName && elt.nodeName.toLowerCase() === 'div') { ... }
Erik Koopmans

那又如何localName呢?
庞巴


7

有时候你想要 element.constructor.name

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

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

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

7

您可以通过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

在此处查找接口的完整列表。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.