13

视窗 7 x64

使用 typescript 1.5 beta 使用 gulp-typescript 2.7.7 进行编译

出现错误:由于声明,类型“节点”上不存在属性“类列表” document.getElementsByClassName('left-aside-wrapper')[0].classList.toggle('isOpen');

我看到 classList 在 lib.d.ts 文件中定义为 interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode { classList: DOMTokenList;

不是很熟悉 d.ts 文件的工作原理,所以这是我的错误还是需要报告的 d.ts 文件中的错误?

4

4 回答 4

13

当我想更新第一个孩子的 classList 时,我遇到了同样的问题。

我的解决方案是

const element = document.getElementById('testId').firstChild as HTMLElement;

于 2020-03-27T09:45:43.280 回答
7

这是因为getElementsByClassName被定义为返回Node数组而不是Element数组。

不是很熟悉 d.ts 文件的工作原理,所以这是我的错误还是需要报告的 d.ts 文件中的错误

基于https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName我会将其报告为错误。

于 2015-06-29T00:39:55.443 回答
2

使用firstElementChild代替firstChild(即代替getElementsByClassName('')[0]

所以

document.getElementsByClassName('left-aside-wrapper').firstElementChild.classList.toggle('isOpen')
于 2021-07-14T17:01:06.517 回答
-1

我也面临一个非常相似的问题,我在下面的代码的帮助下修复了。希望它会奏效-

const target = document.getElementsByClassName('testClass')[0].classList.add('someclassname') 

有关更多详细信息,请参阅本文档 -
https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName

于 2020-11-19T15:00:37.463 回答