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

IT技术 javascript dom
2021-02-28 13:22:04

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

4个回答

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

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

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

elt.nodeName == "DIV"

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

elt.nodeName == "<div>"
我建议这样做: if(elt.nodeName.toLowerCase() === "div") { ... } 这样,如果由于某种原因不再以大写字母(小写或混合)返回,您不必更改它,此代码仍然可以正常工作。
2021-04-29 13:22:04
怎么样localName
2021-05-09 13:22:04
作为对@TheCuBeMan 的回应,使用 toLowerCase() 意味着您还需要确保 nodeName 存在(如果它完全可能 elt 实际上不是一个元素): if (elt.nodeName && elt.nodeName.toLowerCase() === 'div') { ... }
2021-05-14 13:22:04

怎么样element.tagName

另请参阅tagNameMDN 上的文档

根据时间戳你击败我不到1秒!
2021-04-28 13:22:04
来自 QuirksMode:我的建议是根本不要使用 tagName。nodeName 包含 tagName 的所有功能,以及更多功能。因此 nodeName 始终是更好的选择。
2021-04-28 13:22:04

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

看看这里的接口的完整列表。

有时你想要 element.constructor.name

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

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

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