`HTMLElement`和`Element`有什么区别?

Li *_*uan 45 javascript

HTMLElement和之间有什么区别Element

document.createElement("div") instanceof Element 给出了真实

document.createElement("div") instanceof HTMLElement 给出了真实

HTMLElement === Element 假的

Fel*_*ing 28

An HTMLElement DOM Level 2 Core规范ElementHTML扩展中定义的:

interface HTMLElement : Element {
           attribute DOMString       id;
           attribute DOMString       title;
           attribute DOMString       lang;
           attribute DOMString       dir;
           attribute DOMString       className;
};
Run Code Online (Sandbox Code Playgroud)

Element(根据规范)是指ElementDOM Core Level 2规范中定义的接口(尽管还有另一个DOM Core规范(工作草案)).

更新:有很多规格,并不完全清楚哪些浏览器使用哪一个(对我来说).

也许其他人有更多的洞察力......

但无论如何,它Element是一个更通用的接口HTMLElement而后者继承自前者.

更新2:查看继承结构的一个好方法是console.dir(elementReference)为任何元素执行(在Chrome/Safari中运行,需要Firebug for Firefox).

  • 如今,当使用 console.dir(element) 或 console.log(element) 时,控制台会显示元素的交互式视图,隐藏对象的类型和层次结构。您可以使用 Object.getPrototypeOf(element),它显示例如。“HTMLDivElement {...}”。再次调用它会显示“HTMLElement {...}”。还有一次显示“Element {...}”:在这里,我们可以见证继承层次结构:-) (4认同)

jer*_*luc 17

HTMLElement显式引用HTML元素,而Element可引用XML元素.但是,HTMLElement在技术上是Element的子集.

  • 你能想到一个人会在网页JavaScript中遇到一个有用的"元素"而不是"HTMLElement"的情况吗? (3认同)
  • @Bob Stein:是 - document.getElementsByTagName("svg")[0]并且可能是document.getElementsByTagName("iframe")[0] - svg是一个svg元素 - 例如它并不一定有element.innerHTML. (3认同)

Tho*_*mas 12

HTMLElements继承自继承自Node的Element.

这意味着你的HTMLElement同时是一个'instanceof'这三个.事实上它是一个HTMLElement意味着它有一个接口,它只包含HTMLElement需要的方法,如attachEvent.

  • 实际上,`Element` 继承自`Node`。 (2认同)