【问题标题】:error " Property 'innerText' does not exist on type 'EventTarget' "?错误“'EventTarget'类型上不存在属性'innerText'”?
【发布时间】:2019-07-20 01:30:57
【问题描述】:

我有一个错误:

“EventTarget”类型上不存在属性“innerText”。

我正在尝试添加事件侦听器并从元素中获取值。一切正常,但此错误显示在控制台中。

public componentDidMount() {
  const element = document.querySelector(".mdc-list")
  element.addEventListener("click", (e) => {
    this.data.menu.title = e.target.innerText
  })
}

【问题讨论】:

  • 嗯,它没有。 Window 可能是 EventTarget,但它没有 innerText。还有Document。您需要检查是哪个EventTarget
  • console.log(e.target.nodeName) 输出什么?
  • 对我来说很好,但取决于单击的元素类型:jsfiddle.net/bt0mozp3/2
  • 试试this.data.menu.title = e.target.value

标签: javascript reactjs typescript


【解决方案1】:

您可以创建一个类型保护来缩小事件目标类型。

或者只是将事件目标转换为您作为目标获得的任何元素:

this.data.menu.title = <HTMLInputElement>(e.target).innerText;

【讨论】:

    【解决方案2】:

    这是一个 TypeScript 问题,将 event.target 转换为它的类型以告诉 TypeScript 它具有您为其设置的属性。

    const input = event.target as HTMLElement;
    this.data.menu.title=input.innerText
    

    【讨论】:

      猜你喜欢
      • 2021-07-04
      • 2016-09-14
      • 2021-10-22
      • 1970-01-01
      • 2019-01-28
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多