【问题标题】:Undefined Error in Type Script类型脚本中的未定义错误
【发布时间】:2018-01-12 13:22:26
【问题描述】:

我是 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/

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    直接使用 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

    【讨论】:

    • 是的,我也试过了,但出现错误:EventTarget.addEventListener 的参数 2 不是对象。
    • 现在出现参考错误:i 未定义
    • @HarishKarthick 再次检查实际上是由于 i.addEventListener("dragstart", false);在代码上方添加。
    • @HarishKarthick 我也添加了js小提琴链接。
    【解决方案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 的第二个参数必须是一个函数。传入一个函数。

    【讨论】:

    • 感谢您的帮助,您能否建议我如何存档 @SurenSrapyan
    • @SurenSrapyan 拒绝使用工作小提琴进行编辑虽然有点奇怪,但无论如何。
    • OP 正在与dragstart 合作,而不仅仅是显示警报
    • @SurenSrapyan 他不在他的小提琴。但我猜你没看过。
    猜你喜欢
    • 2015-08-14
    • 2019-10-31
    • 1970-01-01
    • 2014-05-29
    • 2016-08-07
    • 2019-01-07
    • 2020-01-28
    • 2021-10-24
    • 2014-10-17
    相关资源
    最近更新 更多