从Element获取HTMLElement

Get*_*awn 15 javascript typescript

我有一个Element,我无法弄清楚如何从中得到HTMLElement它.

例如:

<a href="">A link</a>
<a href="">Another link</a>
Run Code Online (Sandbox Code Playgroud)

然后我就这样得到它们:

var nodes: NodeListOf<Element> = document.querySelectorAll('a'); // Returns a NodeList of Elements
for (let i = 0; i < nodes.length; i++) {
    var node = nodes.item(i);
    // How can I get the HTMLElement here?
}
Run Code Online (Sandbox Code Playgroud)

编辑

在此输入图像描述

这是代码:

let nodes: NodeListOf<Element> = document.querySelectorAll('a');
for (let i = 0; nodes[i]; i++) {
    let node = nodes[i];
    var c = nodes[i].style.backgroundColor = 'red';
}
Run Code Online (Sandbox Code Playgroud)

Nit*_*mer 20

你只需要施放它:

let nodes = document.querySelectorAll('a');
for (let i = 0; nodes[i]; i++) {
    let node = nodes[i];
    var c = (nodes[i] as HTMLElement).style.backgroundColor = 'red';
}
Run Code Online (Sandbox Code Playgroud)

您甚至可以转换为更具体的元素:

(nodes[i] as HTMLAnchorElement).style.backgroundColor = 'red';
Run Code Online (Sandbox Code Playgroud)

问题是document.querySelectorAll返回最通用的元素类型,但是如果你知道自己什么是特定类型那么你可以进行转换,因为你比编译器"知道更好".

  • 也许在执行查询时断言:`let nodes = document.querySelectorAll('a')as NodeListOf <HTMLAnchorElement>;`或者至少在执行赋值时:`let node = nodes [i] as HTMLAnchorElement;` (2认同)

小智 16

let nodes = document.querySelectorAll<HTMLElement>('a');
// or
let nodes = document.querySelectorAll<HTMLAnchorElement>('a');
Run Code Online (Sandbox Code Playgroud)

  • 尽管此代码可能会解决问题,但一个好的答案应该解释该代码的**什么**以及它**如何**提供帮助。 (3认同)

Get*_*awn 6

有效的方法是将元素转换为HTMLElement.

let nodes: NodeListOf<HTMLElement> = document.querySelectorAll('a') as NodeListOf<HTMLElement>;
Run Code Online (Sandbox Code Playgroud)