当用 JavaScript 去访问 HTML 中的元素的时候,实际访问到的是 DOM 元素。比如,访问 div
元素,实际拿到的是 HTMLDivElement
;访问 span
元素,实际拿到的是 HTMLSpanElement
。
大多数情况下,不同的 HTML 元素有不同的 DOM interface 对应,因为不同的元素很可能有一些行为/属性上的不同。
但是也存在一些 HTML 元素,并没有特定的 DOM interface 对应,直接使用了 HTMLElement 这个基类。常见的例子有 i
,b
或者 ruby
等。
注:根据 MDN 的说明,Firefox 中 i
对应的 DOM 是 HTMLSpanElement
。但实际测试下来,最新版本的 Firefox 实现和标准是一致的,使用的 DOM interface 是 HTMLElement
而不是 HTMLSpanElement
。
可以用下面的方法简单的查看具体使用的是哪一个 DOM interface:
// should be: HTMLElement
document.createElement('i').constructor.name;
// should be: HTMLSpanElement
document.createElement('span').constructor.name;