Имя элемента HTML DOM в виде строки - PullRequest
1 голос
/ 12 января 2012

Предположим, у меня есть следующий фрагмент HTML-кода:

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

Теперь я хочу получить этот элемент DOM, используя JavaScript:

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

Работает нормально, проблем пока нет.

Но когда я распечатываю его в окне предупреждения с помощью alert(element);, отображается object HTMLInputElement.
Есть ли способ получить имя этого элемента (HTMLInputElement) в виде строки?

(Обратите внимание, что при произнесении «имя элемента» я имею в виду не атрибут name элемента, а имя, отображаемое при использовании alert() например, как описано выше.

Ответы [ 5 ]

4 голосов
/ 12 января 2012

В некоторых браузерах , таких как 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 за указание исключительных случаев.)

2 голосов
/ 12 января 2012
1 голос
/ 12 января 2012

При передаче объекта в функцию alert() он неявно вызывает .toString() для этого объекта, чтобы получить текст для предупреждения. Вы можете сделать что-то вроде:

var element = document.getElementById("myInput");
var string = element.toString(); // this will return 'object HTMLInputElement'

затем работайте с переменной string, чтобы получить только часть HTMLInputElement.

0 голосов
/ 12 января 2012

если я правильно понял вопрос, попробуйте document.getElementById("myinput").toString().

0 голосов
/ 12 января 2012

document.getElementById возвращает элемент HTML как объект. Просто получите атрибут объекта, который вы хотите отобразить в предупреждении (например, alert(element.getAttribute('ID'));). В качестве альтернативы, если вы хотите, чтобы «[объект HTMLInputElement]» отображался в предупреждении, просто вызовите метод toString () для объекта в предупреждении (например, alert(element.toString());).

Надеюсь, это поможет,

Пит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...