假设我有以下HTML代码段:
<input type="text" id="myinput" />
现在我想使用JavaScript获取DOM元素:
var element = document.getElementById("myinput");
工作正常,到目前为止没问题。
但是当我使用alert(element);
在警告框内打印时,会显示object HTMLInputElement
有没有办法将该元素名称(HTMLInputElement)作为字符串?
(请注意,当说“元素名称”时,我不是指元素的 name
属性,而是名称是怎么回事例如,如上所述,使用alert()
时显示。
答案 0 :(得分:4)
在某些浏览器中,such as Firefox(以及Chrome,可能还有其他浏览器)可以执行以下操作:
element.constructor.name; // => "HTMLInputElement"
但总的来说它是a bit more complicated,也许甚至不完全可靠。最简单的方法可能就是这样:
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"
<强> [编辑] 强>
或者,使用the "nodeName" attribute,您可以编写一个通常更可靠的实用函数:
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指出了特殊情况。)
答案 1 :(得分:2)
alert(element.nodeName);
答案 2 :(得分:1)
将对象传递给alert()
函数时,它会隐式调用该对象上的.toString()
以获取警报的文本。你可以这样做:
var element = document.getElementById("myInput");
var string = element.toString(); // this will return 'object HTMLInputElement'
然后使用string
变量来仅获取HTMLInputElement部分。
答案 3 :(得分:0)
document.getElementById将HTML元素作为对象返回。只需获取要在警报中显示的对象的属性(例如,alert(element.getAttribute('ID'));
)。或者,如果您想要&#39; [object HTMLInputElement]&#39;显示在警报中,只需在警报中的对象上调用toString()方法(例如,alert(element.toString());
)。
希望这有帮助,
皮特
答案 4 :(得分:0)
如果我有正确的问题,你应该尝试document.getElementById("myinput").toString()
。