【发布时间】:2019-07-04 23:19:25
【问题描述】:
我正在尝试从 typescript 中的 DOM 中按类名获取元素。我在这里所做的似乎很简单,但控制台显示错误。
function showSlides() {
var i;
var slides = <HTMLElement[]<any>document.getElementsByClassName('slide');
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
}
预期结果应该是一个包含 3 个项目的数组,并且应该将显示样式更改为 none,但实际结果是 JS 错误:Uncaught TypeError: Cannot read property 'style' of undefined.
【问题讨论】:
-
这不是 TS 错误。是JS。这只是表示某个索引处的
slides[]没有元素(值),因此它是undefined并且您无法读取“无”的属性。 -
那么有什么办法可以解决这个问题呢?我试过 querySelectorAll,但它只适用于元素而不适用于类名。
-
当您记录
slides的值时会发生什么? -
我不确定你为什么使用
<HTMLElement[]<any>。getElementsByClass已经返回了一个 HTML 元素数组。我已经使用您的代码示例创建了一个 Plunkr,我没有遇到问题 > plnkr.co/edit/f5XKghZz7aEQLKZdz2af?p=preview -
@PeterBoomsma 因为当我使用 document.getElementByClassName 时,我在代码中有一个错误:“元素”类型上不存在属性“样式”,我认为它是 TypesCript 的东西,这就是我需要的原因将其转换为 HtmlElement
标签: typescript