Javascript HtmlPanelment(和其他)有什么用途

Javascript HtmlPanelment(和其他)有什么用途,javascript,asp.net,internet-explorer,Javascript,Asp.net,Internet Explorer,我正在学习javascript var label = document.getElementById('lblMsg'); 如果我用F12检查元素,它将被描述为一个HtmlPanelElement。我无法将元素强制转换为其类型,例如: var label = (HTMLSpanElement) document.getElementById('lblMsg'); 那么HTMLPanelment有什么用呢?它有什么不同于其他HTMLElement的特性吗?既然你是一个初学者,我将指出一些基本

我正在学习javascript

var label = document.getElementById('lblMsg');
如果我用F12检查元素,它将被描述为一个HtmlPanelElement。我无法将元素强制转换为其类型,例如:

var label = (HTMLSpanElement) document.getElementById('lblMsg');

那么HTMLPanelment有什么用呢?它有什么不同于其他HTMLElement的特性吗?

既然你是一个初学者,我将指出一些基本事实,这些事实可能会帮助你理解你所观察到的东西

JavaScript是弱类型的

JavaScript中的对象有类型,但变量没有类型,即任何变量都可以接受任何类型的对象。类型转换不是必需的,也不可能(事实上,行
(HTMLSpanElement)文档.getElementById('lblMsg')
是一个语法错误)

HTML元素类型

HTMLSpanElement
是一种类型。嗯,不是真的。它是一个DOM接口,为了方便起见,所有现代浏览器都将其视为本机对象类型。大多数HTML元素都有其主界面的类型

接口的要点是公开一组可用于所有实现的方法、属性或事件。您已经有了
HTMLSpanElement
的MDN链接:

对某一类型进行测试

为了测试对象是否是特定类型的实例,我们可以使用
obj instanceof type
。在这种情况下:

if (document.getElementById('lblMsg') instanceof HTMLSpanElement)
{
    ...
}
类型继承始终受到尊重

document.getElementById('lblMsg') instanceof Object // true
获取对象的类型

要获取HTML元素的类型,我们使用
element.constructor
,如中所示

document.getElementById('lblMsg').constructor
如果您在浏览器控制台中输入此项,您将看到如下内容

`function HTMLSpanElement() { [native code] }`
别惊讶。对象类型是JavaScript中的函数。如果我们只是对这个对象类型的名称感兴趣,我们可以使用

document.getElementById('lblMsg').constructor.name
这将生成字符串“HTMLSpanElement”


这种确定对象类型的方法并非100%万无一失,但它适用于所有内置对象。

非常好的开始。谢谢。@ReBootTheUniverse很乐意帮忙。