未捕获的TypeError:无法读取未定义的属性foo

时间:2016-12-20 03:44:49

标签: javascript html

我的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

我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:1)

看起来你还没有宣布变量todo。尝试类似todo = {};的内容如果您有任何疑问请与我联系!

答案 1 :(得分:0)

变量todo已经超出范围。它可能在调用它时在handlers.toggleCompleted()的闭包之外的函数中声明。

有几种方法可以解决这个问题,但最简单的方法就是todo全局:

  1. 查看var todo并从头开始删除var
  2. 在JS的顶部添加var todo = {};
  3. 这将使todo成为您网页上始终定义的全局对象。

答案 2 :(得分:0)

令人困惑的是,代码将在Plunkr,故障或代码集中运行,但不能在文本编辑器和浏览器中运行,因为这些站点的路由设置方式。在index.html文件中,您需要替换<script src = "filename.js></script>  同  <script src="entire path to filename.js"></script>