点击功能在加载时运行;未定义函数的未捕获类型错误
Click function runs on load; Uncaught TypError for undefined function
这是一个简单的脚本,应该使您的文本改变颜色,如果你点击它。然而,当我加载页面时,颜色会自动改变(绕过click事件),并且控制台在
行上给出此错误"Uncaught TypeError: undefined is not a function"。allP.addEventListener("click", this.changeSomething(), false);
我的问题是:1)我怎样才能使这个非常简单的脚本工作?2)还有其他关于更好地推进编码的反馈吗?我非常感谢你的指教。
标记:
<P>Lorem</P>
<P>Lorem</P>
Javascript: var colorChanger = {
init : function() {
this.clickEvent();
},
config : {
myColor: "red"
},
clickEvent : function() {
allP = document.querySelectorAll("p");
allP.addEventListener("click", this.changeSomething(), false);
},
changeSomething: function(myColor) {
myColor = this.config.myColor;
$("p").css({
color: myColor // I know changing CSS in JS is bad practice but this is just for the sake of the exercise
})
}
}
$(document).ready(function() {
colorChanger.init();
});
任何反馈都是非常感谢的!
1) addEventListener
期望函数作为第二个参数,但您正在传递函数返回的内容(即undefined
)。
2)在this.changeSomething
中,上下文(this
)是window
,因为这是在事件上调用的函数的上下文。
allP.addEventListener("click", this.changeSomething(), false);
allP.addEventListener("click", this.changeSomething.bind(this), false);
编辑:
,这…
allP = document.querySelectorAll("p");
allP.addEventListener("click", this.changeSomething(), false);
. .不能工作。您不能像那样访问nodeList中的项。
试试这样写:
allP = document.querySelectorAll("p");
for (var i=0; i<allP.length; i++) {
allP.item(i).addEventListener("click", this.changeSomething.bind(this), false);
}
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Javascript搜索函数错误
- Chrome Javascript日期构造函数错误
- 浏览器中出现javascript初始大写函数错误
- Createjs冲突问题localToLocal不是函数错误
- Java脚本函数错误
- 更新带有Javascript函数错误的变量
- 如何将对象插入对象列表的开头,当它有 unshift 不是函数错误
- 在将 Pickadate 与 Meteor 一起使用时,未定义不是函数错误
- 运行咕噜咕噜咕噜抛出 _.object 不是函数错误
- 了解函数(错误、数据)回调
- javascript中的typeof()函数错误
- 我一直在获取angularjs服务不是函数错误(LoginService.login不是函数)
- HTML5拖拽&drop正在抛出undefined不是函数错误
- Google Maps API a.lat不是函数错误
- getItemAtIndex不是函数错误
- Javascript停止函数错误
- 对话框函数错误无效函数
- Javascript 自定义函数错误
- 因果报应单元测试'未定义'不是函数错误