HTML DOM元素名称作为字符串

时间:2012-01-12 14:19:49

标签: javascript html dom

假设我有以下HTML代码段:

<input type="text" id="myinput" />

现在我想使用JavaScript获取DOM元素:

var element = document.getElementById("myinput");

工作正常,到目前为止没问题。

但是当我使用alert(element);在警告框内打印时,会显示object HTMLInputElement 有没有办法将该元素名称(HTMLInputElement)作为字符串?

(请注意,当说“元素名称”时,我不是指元素的 name 属性,而是名称是怎么回事例如,如上所述,使用alert()时显示。

5 个答案:

答案 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)

答案 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()