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

我需要一种方法来确定JavaScript中的HTML元素的类型。它有ID,但元素本身可以是<div><form>字段、<fieldset>等。我怎样才能做到这一点呢?

277035 次浏览

nodeName是你要找的属性。例如:

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

注意,nodeName返回的元素名称是大写的,不带尖括号,这意味着如果你想检查一个元素是否是<div>元素,你可以这样做:

elt.nodeName == "DIV"

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

elt.nodeName == "<div>"

有时你需要element.constructor.name

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


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


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

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

在这里中可以找到完整的接口列表。