2017-01-17 21 views
0

私が試してみました:私はいくつかの方法が、どれも仕事をTypeScript。どのようにDOMコレクションを宣言できますか?

let $inputsCollection:HTMLCollection = document.body.querySelectorAll('input'); 

let $inputsCollection:HTMLCollection = document.body.querySelectorAll('input') as HTMLCollection; 

let $inputsCollection = document.body.querySelectorAll('input') as HTMLCollection; 

試してみました。

+1

://github.c om/Microsoft/TypeScript/blob/master/lib/lib.d.ts#L16786)は 'HTMLCollection'ではなく' NodeListOf 'を返します。 'NodeListOf'を使うことはできませんか? –

+0

@NitzanTomerありがとう! – Smiranin

答えて

2

querySelectorAllHTMLCollectionではなく、NodeListが返されます。 NodeListHTMLCollectionに変換しようとしても意味がありません。あなたはこのかかわらを行うことができます。

let $inputsCollection: NodeListOf<HTMLInputElement> = 
    document.body.querySelectorAll('input'); 

場合は、上記のリスト内のすべての要素がHTMLでinput要素からでなければならないので、HTMLInputElementを使用しています。例のためのクエリのうち、異種の要素を取得します場合は、あなたが行うことができます:

let $inputsCollection: NodeListOf<Element> = 
    document.body.querySelectorAll('*'); 

querySelectorAllは、そのようなノードを返すことができませんが、これも、Elementオブジェクトよりも他のタイプのノードを可能にする:

let $inputsCollection2: NodeList = document.body.querySelectorAll('*'); 
[querySelectorAll(HTTPSためだ

FYI、HTMLCollectionオブジェクトを返す方法は(等、.getElementsByClassName.getElementsByTagName)方法の.getElementsBy...ファミリーで

+0

ありがとうございました – Smiranin

+0

よろしくお願いします。 – Louis

関連する問題