错误提示:类型“EventTarget”上不存在属性“innerText”。

17

我遇到了一个错误:

类型“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 - Roberto Zvjerković
console.log(e.target.nodeName) 输出什么? - Mamun
对我来说运行良好,但取决于所点击的元素类型:https://jsfiddle.net/bt0mozp3/2/ - Pete
尝试使用 this.data.menu.title = e.target.value - Monica Acha
2个回答

39

这是一个TypeScript问题,将事件目标转换为它的类型,告诉TypeScript它有你为其设置的属性。

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

对于像我这样在HTML模板中看到此错误的人:$ any($ event.target).innerText - Huy - Logarit

1
你可以制作一个类型守卫来缩小事件目标类型的范围。
或者只需将事件目标转换为你正在获取的任何元素: this.data.menu.title = <HTMLInputElement>(e.target).innerText;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接