2016-09-06 22 views
2

我正在學習javascript。HTMLSpanElement(和其他)的用法

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

如果我用F12檢查元素,將其描述爲HTMLSpanElement。我不能將元素投射到它的類型,例如:

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

那麼HTMLSpanElement的用法是什麼?它有任何不同於其他HTMLElements的屬性嗎?

+1

https://developer.mozilla。org/en-US/docs/Web/API/HTMLSpanElement – Teemu

回答

1

既然你是初學者,我會指出一些基本事實,這些事實可能會幫助你理解你正在觀察的內容。

JavaScript是弱類型在JavaScript

對象做有類型,但變量不是類型的,即,任何變量可以採取任何類型的任何對象。類型轉換不是必需的,也不可能(並且實際上線路(HTMLSpanElement) document.getElementById('lblMsg')是語法錯誤)。

HTML元素類型

HTMLSpanElement是一種類型。那麼,不是真的。它是一個DOM接口,爲方便起見,它被所有現代瀏覽器視爲本地對象類型。大多數HTML元素都有其主界面的類型。

接口的意義在於向所有實現公開一組方法,屬性或事件。您已擁有HTMLSpanElement的MDN鏈接:https://developer.mozilla.org/en-US/docs/Web/API/HTMLSpanElement

測試的類型

要測試對象是否是一個特定類型的實例,我們可以使用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%萬無一失,但它適用於所有內建對象。

+0

良好的開端。謝謝。 –

+0

@ReBootTheUniverse樂於助人。 –