我是一名学习JavaScript的新网络开发人员,我一直在线上课程,所以请原谅。
任何人都可以向我解释为什么我会收到此错误:未捕获的TypeError:在按此顺序编写代码时无法读取属性'添加' :
MediaElement.ScrubbingEnabled = True
但是这样写的方式很好:
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
const key = document.querySelector(`div[data-key="${e.keyCode}"]`);
if (!audio) return;
audio.currentTime=0;
audio.play();
console.log(key);
key.classlist.add('playing');
答案 0 :(得分:0)
如果我没有弄错的话,罪魁祸首就是一个简单的错字。在你的第一个例子中,
key.classlist.add('playing');
< - 正确的拼写是classList
(大写字母L)
您可以尝试更新至classList
并查看是否可以解决问题吗?
请记住,Javascript是一种区分大小写的语言。作为建议,尝试使用智能IDE,例如VS Code,它可以帮助您非常有效地发现和调试此类问题。
要展开,消息Uncaught TypeError: Cannot read property '[x]'
基本上是Javascript,相当于大多数编程语言中的null reference exception
。您的Javascript解析器抱怨的是,它无法在.add
.classlist
属性上找到key
属性。以下是它的实现方式:
在key.classlist.add('playing')
行上,它开始从左到右解析:
key
众所周知,继续前进。 classlist
(有拼写错误)未知。此时,Javascript会将key.classlist
评估为名为undefined
的唯一值。简单地说,这个属性没有在对象上发现,因此,它是未定义的。好的,继续解析...... key.classlist.add
,这就是事情发生的地方。这等于undefined.add
。现在,这是一个例外,生成您看到的消息。 由于您刚开始使用Javascript,因此阅读并理解Javascript的独特/古怪null
和undefined
值以及它们的行为方式是值得的:< / p>