繁体   English   中英

当我尝试将打字稿代码编译为javascript时,得到** Type&#39;NodeListOf <Element> &#39;不是数组类型或字符串类型**

[英]When i try to compile typescript code into javascript, getting **Type 'NodeListOf<Element>' is not an array type or a string type**

当我尝试将打字稿代码编译为javascript时,获得Type'NodeListOf'不是数组类型或字符串类型

if (query.length) {                                              
  var regex = new RegExp("(" + query + ")", "gm"); 
  var li = document.querySelectorAll("#id li"); //error                 
    for (var Element of li){                                   
      Element.innerHTML = Element.innerHTML.replace(regex, '<span class="classname">$1</span>'); 
    }
  }
}

下面的编译很好,我已经添加了内联注释。

let query = '';
if (query.length) {
    var pattern = new RegExp("(" + query + ")", "gim");
    var li: NodeListOf<Element> = document.querySelectorAll("#test li");
    // ES5 does not allow TS iteration of NodeListOf<Element> nor use of Array.from 
    // so it is necessary to loop over it manually.
    // Note that Element is an existing type which caused a conflict with "(var Element of list)".
    // It was necessary to rename Element to element.
    for (let i = 0; i < li.length; i++) {
        let element = li[i];
        element.innerHTML = element.innerHTML.replace(pattern, '<span class="target">$1</span>');
    }
}

这也可以:

let elements: any = document.querySelectorAll(".class");
for(let ele of elements) {
     // do stuff
}

试试这个..将解决问题。

 if (query.length) { var pattern = new RegExp("(" + query + ")", "gim"); var li = document.querySelectorAll("#test li"); for (var Element of <any> li){ Element.innerHTML = Element.innerHTML.replace(pattern, '<span class="target">$1</span>'); } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM