提问人:Luke 提问时间:2/13/2020 更新时间:10/20/2023 访问量:9412
在javascript / typescript中将元素转换为HTMLElement
Converting Element to HTMLElement in javascript / typescript
问:
因此,我使用 querySelectorAll 获取与选择器匹配的元素列表,该选择器将它们存储在 NodeList 中。
然后,我使用 forEach 循环扫描 NodeList,此时每个 individualItem 的类型为“Element”。
但是,我将这些 individualItems 输入到一个函数“doThing()”中,该函数期望 individualItem 的类型为“HTMLElement”(我使用的是打字稿)。我想知道是否有一些内置的 js 函数用于将“Element”类型转换为“HTMLElement”类型,或者如果没有,这样的函数可能是什么样子的
const h = document.querySelectorAll(someClassString);
h.forEach(individualItem => {
individualItem.addEventListener(c.EVENT, () => doThing(individualItem));
})
答:
5赞
Gabriel Lima
2/13/2020
#1
既然你使用的是 TypeScript,为什么不把它强制转换为另一种类型呢?在这里查看
const h = document.querySelectorAll(someClassString);
h.forEach(individualItem => {
individualItem.addEventListener(c.EVENT, () => doThing(individualItem as HTMLElement));
});
编辑 2023
我不知道我在写这篇文章时是否对 Typescript 的了解有限,或者这个功能是否还不可用,但正如 Ron Jonk 指出的那样,最优雅和可重用的解决方案是
const h = document.querySelectorAll<HTMLElement>(someClassString);
h.forEach(individualItem => {
individualItem.addEventListener(c.EVENT, () => doThing(individualItem));
});
8赞
Ron Jonk
7/7/2021
#2
若要键入 querySelectorAll 的输出,可以按以下方式执行此操作:
document.querySelectorAll<HTMLTableElement>('.mytable')
评论
0赞
Gabriel Lima
10/20/2023
尽管问题所有者接受了我的答案,但我认为这是最优雅的解决方案。
评论