type&#39; NodeListOf <htmllielement>&#39;不能分配给&#39;元素[]&#39;

时间:2017-03-22 04:57:55

标签: javascript typescript

  

let li:Element [] = document.getElementsByTagName(&#39; span&#39;);

我收到类型转换错误,如何将值存储在&#39;元素[]&#39; ??

3 个答案:

答案 0 :(得分:2)

document.getElementsByTagName('span')返回的对象与数组对象不兼容。您需要将其声明如下:

let li: NodeListOf<HTMLElement> = document.getElementsByTagName('span');

如果你真的需要它作为一个数组对象,你可以使用:

let li: NodeListOf<HTMLElement> = document.getElementsByTagName('span');
let liArray: Element[] = Array.prototype.slice.call(li);

答案 1 :(得分:0)

这里的问题是getElementsByTagName返回一个类似数组的对象,而不是一个实际的数组。您需要先使用扩展运算符(或ES5的[].slice.call(...))将其强制转换为其中一个:

let li: HTMLElement[] = [...document.getElementsByTagName('span')]

答案 2 :(得分:0)

尝试先创建变量的隐式形式,然后显式传递此定义:

let li = document.getElementsByTagName('span');//Hover IDE

收件人..

let li: NodeListOf<HTMLSpanElement>= document.getElementsByTagName('span');

然后..

let arr: Element[]
    for (let i in li) 
      arr.push(li[i] as Element)