Подтвердить что ты не робот

Какая разница между `HTMLElement` и` Element`?

Какая разница между HTMLElement и Element?

document.createElement("div") instanceof Element дает true

document.createElement("div") instanceof HTMLElement дает true

HTMLElement === Element дает false

4b9b3361

Ответ 1

An HTMLElement является Element, как определено в расширении HTML к спецификации ядра DOM Level 2:

interface HTMLElement : Element {
           attribute DOMString       id;
           attribute DOMString       title;
           attribute DOMString       lang;
           attribute DOMString       dir;
           attribute DOMString       className;
};

Element (по спецификации) относится к интерфейсу Element, как он определен в спецификации DOM Core Level 2 (есть еще одна спецификация DOM Core (рабочий проект), хотя).

Обновление: Есть много спецификаций, и не совсем ясно, какие браузеры используют какой (для меня).

Возможно, у кого-то еще больше понимания...

Но в любом случае Element является более общим интерфейсом, чем HTMLElement, а последний наследуется от первого.

Обновление 2: Хороший способ увидеть структуру наследования - выполнить console.dir(elementReference) для любого элемента (работает в Chrome/Safari, требуется Firebug для Firefox).

Ответ 2

HTMLElement явно ссылается на элемент HTML, тогда как Element может ссылаться на элемент XML. Тем не менее, HTMLElement является технически подмножеством элемента.

Ответ 3

HTMLElements наследует элемент Element, который наследуется от Node.

Это означает, что ваш HTMLElement одновременно является "экземпляром" всех трех. Тот факт, что он является HTMLElement, означает, что у него есть интерфейс, содержащий методы, которым требуется только HTMLElement, как attachEvent.