打字稿。如何声明DOM集合?

时间:2017-01-17 15:18:28

标签: javascript angularjs typescript

我试过了:

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 个答案:

答案 0 :(得分:3)

querySelectorAll不会返回HTMLCollection而是NodeList。尝试将NodeList转换为HTMLCollection毫无意义。你可以这样做:

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

上述情况使用HTMLInputElement,因此列表中的所有元素都必须来自HTML中的input个元素。对于您从查询中获取异构元素的情况,您可以执行以下操作:

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

这甚至允许除Element个对象之外的其他类型的节点,但querySelectorAll不能返回这样的节点:

let $inputsCollection2: NodeList = document.body.querySelectorAll('*');

仅供参考,返回HTMLCollection个对象的方法是.getElementsBy...方法系列(.getElementsByClassName.getElementsByTagName等。)