类型脚本中的未定义错误

时间:2018-01-12 13:22:27

标签: javascript typescript

我是Type Script的新手,我正在尝试将一小段javascript代码转换为typescript&收到错误:typeError list [i]未定义。 这是我的实际js:

function handleDragStart(e) {
  this.style.opacity = '0.4';  // this / e.target is the source node.
}

var cols = document.querySelectorAll('#columns .column');
[].forEach.call(cols, function(col) {
  col.addEventListener('dragstart', handleDragStart, false);
});

这里我的小提琴 https://jsfiddle.net/hahkarthick/8cwcb970/3/

2 个答案:

答案 0 :(得分:3)

直接使用i代替list [i]。

此外,您必须在下面的代码中传递函数名而不是false。

i.addEventListener("dragstart", false);

完整代码: -

    class col {
  itrate(): any {
    let list: any = document.querySelectorAll("#columns .column");
    let i:any;
    for ( i of list) {
        console.log(i);
      console.log(list[i]);
      i.addEventListener("dragstart", this.dragStart);
    }
  }
  dragStart(event): any{
    console.log(event);
  }
}
let colz: any = new col();
colz.itrate();

小提琴链接: - working code

答案 1 :(得分:2)

当您使用for of时,您的i是当前项目,而不是它的索引。因此,您只需使用i,而不是list[i]

你的功能需要看起来像这样。

itrate(): any {
   let list: any = document.querySelectorAll("#columns .column");
   for (let i of list) {
     console.log(i);
     i.addEventListener("dragstart", false);
   }
}

还有一件事,你会得到一个错误,因为addEventListener的第二个参数必须是一个函数。将函数传递给。