为何getElementById赋值代码行触发TS(1005)错误?
错误原因
TS(1005)是语法解析错误,你这个场景的触发点是等号左侧的变量名不符合JS/TS命名规则:
- JS/TS中
-是减法运算符,不允许出现在变量名里。你写的progress-bar2会被解析器拆成三段:progress(标识符)、-(减法运算符)、bar2(标识符),解析到后面的=时完全不符合语法逻辑,就会抛出错误,定位刚好落在=符号位置。 - 你之前修改的是HTML/CSS里的标识名,这部分允许使用连字符,但JS/TS的变量命名规则和HTML/CSS的id/class命名规则是独立的,修改HTML/CSS里的名称不会解决JS侧的变量语法错误。
修复方法
把变量名里的连字符替换为JS/TS允许的字符即可,行业内最常用驼峰命名法:
// 正确写法:用驼峰命名,声明变量后接收DOM元素 const progressBar2 = document.getElementById("progressbarfull");
如果你确实需要用到带连字符的变量名(极不推荐),只能通过对象属性的方括号语法访问,比如全局作用域下的window["progress-bar2"],但这种写法可读性差、容易造成全局污染,日常开发不要用。
额外注意:你提到其他位置用了
getElementbyID/getElementbyClassName的写法,这两个API的大小写是错误的,正确写法为getElementById(Id的I大写、d小写)、getElementsByClassName(Element后加s表复数),大小写不匹配会触发“方法不存在”的报错,建议一并修正。
内容的提问来源于stack exchange,提问作者Lil_xx
相关产品推荐
相关产品推荐

