Windows 7 x64
使用gulp-typescript 2.7.7使用typescript 1.5 beta进行编译
获取错误:由于语句,属性'classList'在类型'Node'上不存在
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文件中需要报告的错误?
答案 0 :(得分:7)
当我要更新第一个孩子的classList时遇到同样的问题。
我的解决方法是
const element = document.getElementById('testId').firstChild as HTMLElement;
答案 1 :(得分:3)
这是因为getElementsByClassName
被定义为返回Node
数组而不是Element
数组。
并非所有熟悉d.ts文件的工作方式都是如此,这是我的错误,还是d.ts文件中需要报告的错误
基于https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName,我会将其报告为错误。
答案 2 :(得分:1)
使用 firstElementChild
代替 firstChild
(即代替 getElementsByClassName('')[0]
)
所以
document.getElementsByClassName('left-aside-wrapper').firstElementChild.classList.toggle('isOpen')
答案 3 :(得分:0)
我也面临着非常相似的问题,并且在以下代码的帮助下进行了修复。希望它能工作-
const target = document.getElementsByClassName('testClass')[0].classList.add('someclassname')
有关详细信息,请参阅此文档-
https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName