TypeError:无法读取属性'添加'分歧

时间:2018-01-19 22:47:35

标签: javascript typeerror

我是一名学习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');

1 个答案:

答案 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的独特/古怪nullundefined值以及它们的行为方式是值得的:< / p>