В некоторых браузерах , таких как Firefox (и Chrome, возможно, другие), вы можете сделать:
element.constructor.name; // => "HTMLInputElement"
Но в целом это немного сложнее возможно даже не совсем надежный.Самый простой способ может быть таким:
function getClassName(o) {
// TODO: a better regex for all browsers...
var m = (o).toString().match(/\[object (.*?)\]/);
return (m) ? m[1] : typeof o;
}
getClassName(element); // => "HTMLInputElement"
getClassName(123); // => "number"
[Редактировать]
Или, используя атрибут "nodeName" , вы можете написатьвспомогательная функция, которая, как правило, должна быть гораздо более надежной:
function getHtmlElementClassName(htmlElement) {
var n = htmlElement.nodeName;
if (n.matches(/^H(\d)$/)) {
return "HTMLHeadingElement";
} else if (/* other exceptional cases? */) {
// ...
} else {
return "HTML" + n.charAt(0) + n.substr(1).toLowerCase() + "Element";
}
}
(Спасибо @Esailija за разумную реализацию, @Alohci за указание исключительных случаев.)