我的JavaScript:
todo.completed = !todo.completed;
ERROR:
Uncaught TypeError: Cannot read property 'completed' of undefined
at Object.toggleCompleted (script.js:34)
at Object.toggleCompleted (script.js:89)
at HTMLButtonElement.onclick ((index):33)
toggleCompleted @ script.js:34
toggleCompleted @ script.js:89
onclick @ (index):33
我在这里错过了什么吗?
答案 0 :(得分:1)
看起来你还没有宣布变量todo。尝试类似todo = {};
的内容如果您有任何疑问请与我联系!
答案 1 :(得分:0)
变量todo
已经超出范围。它可能在调用它时在handlers.toggleCompleted()
的闭包之外的函数中声明。
有几种方法可以解决这个问题,但最简单的方法就是todo
全局:
var todo
并从头开始删除var
。var todo = {};
这将使todo
成为您网页上始终定义的全局对象。
答案 2 :(得分:0)
令人困惑的是,代码将在Plunkr,故障或代码集中运行,但不能在文本编辑器和浏览器中运行,因为这些站点的路由设置方式。在index.html文件中,您需要替换<script src = "filename.js></script>
同
<script src="entire path to filename.js"></script>