Javascript 未定义数组 public onChange(事件:事件){ 让files=event.target['files']; let list:string[]; console.log(文件); 对于(var i=0;i{ 让infoFile:string=fileReader.result; list.push(infoFile); }; readAsDataURL(files[i]); } } 控制台日志(列表); let preview=document.querySelector('img'); preview.src=list[0]; };

Javascript 未定义数组 public onChange(事件:事件){ 让files=event.target['files']; let list:string[]; console.log(文件); 对于(var i=0;i{ 让infoFile:string=fileReader.result; list.push(infoFile); }; readAsDataURL(files[i]); } } 控制台日志(列表); let preview=document.querySelector('img'); preview.src=list[0]; };,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,当我单击名为medthod onChange()的input type=“file”时,我的component.ts中有一个方法,但当控制台中的左循环出现时,我有一条消息说数组未定义。我检查fileReader.result是否为空,为什么会发生这种情况?如何解决这个问题有一些想法。您必须首先初始化列表: public onChange(event: Event) { let files = event.target['files']; let list: string[];

当我单击名为medthod onChange()的input type=“file”时,我的component.ts中有一个方法,但当控制台中的左循环出现时,我有一条消息说数组未定义。我检查fileReader.result是否为空,为什么会发生这种情况?如何解决这个问题有一些想法。

您必须首先初始化列表:

  public onChange(event: Event) {
    let files = event.target['files'];
    let list: string[];
    console.log(files);
    for (var i = 0; i < files.length; i++) {
      if (FileReader && files && files.length) {
        let fileReader = new FileReader();
        fileReader.onload = () => {
          let infoFile: string = fileReader.result;   
          list.push(infoFile);         
        };
        fileReader.readAsDataURL(files[i]);
      }
    }
    console.log(list);
    let preview = document.querySelector('img');
    preview.src = list[0];
  };
当你这么做的时候

let list: string[] = [];

您只告诉编译器这个变量将是一个字符串数组。但是在运行时它是未定义的,因为您没有初始化它。

@Matiusz.V7也许您知道如何在循环之外使用此数组,因为当我使用列表[0]时,我在控制台中有未定义的错误,我有类似这样的内容[]0:“数据:图像…”1:“数据.图像2…”仅当列表为空时,才从列表[0]中未定义。如果list.length>0,您可能需要事先检查。除此之外,您应该能够像普通列表一样使用它。[]0:“数据:image/jpeg;base64,/9j/4AAQSkZJRgA…”1:“数据:image/jpeg;base64。。。。。长度:2 proto:Array(0)我有一个类似于长度=2的问题,可以试着问另一个问题,并对您的问题进行更详细的描述。
let list: string[]