我是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);
});
答案 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
的第二个参数必须是一个函数。将函数传递给。