无法读取未定义的属性'value'?
无法读取未定义的属性'value'?
为了学习JavaScript,我正在编写一个小的文本编辑器谷歌浏览器插件。但是我一直遇到这个错误:无法读取未定义的属性\'value\'
。每当调用tranquility.save();
时发生这个错误,但是调用tranquility.open();
时却没有,这很奇怪,因为它们基本上是相同的,只是交换了位置。paper
只是一个。\n
var tranquility = { paper: document.getElementById("paper"), lastOpenedPaper: localStorage.getItem("lastOpenedPaper"), listen: function() { this.paper.addEventListener("keyup", this.save, false); }, save: function() { localStorage.setItem(this.lastOpenedPaper, this.paper.value); }, open: function() { this.paper.value = localStorage.getItem(this.lastOpenedPaper); } }
\n编辑:\n它是在创建之后调用的(除非它必须是整个DOM)\n
当调用tranquility.save()时出现Cannot read property 'value' of undefined错误,但调用tranquility.open()时没有出现这个错误,这很奇怪,因为它们基本上是相同的,只是位置对调了。
原因是在tranquility.save()方法中,使用了this.paper.value,但this.paper.value可能没有被定义。而在tranquility.open()方法中,将一个值赋给了this.paper.value,所以它是否被定义并不重要。
另外,如果这段代码没有在页面加载完毕之前声明或在
解决方法是:
1. 确保在调用tranquility.save()之前,this.paper.value已经被定义。
2. 将脚本代码放在页面加载完毕之后执行,或者将代码放在
下面是解决问题的代码示例:
通过上述代码示例,我们可以确保在调用tranquility.save()之前,this.paper.value已经被定义,并且将脚本代码放在页面加载完毕之后执行,以保证document.getElementById("paper")可以正常工作。这样就可以解决Cannot read property 'value' of undefined错误。