我正在玩Javascript并创建了一个类。在初始化类时,我向某个div添加一个按钮,然后在单击该按钮时向该按钮添加一个事件监听器。但是,当页面加载时,函数会被触发,而不是在单击按钮时触发。这是我的代码:
function Photobank(){
this.photos;
this.addPhotoButton;
}
Photobank.prototype.init = function(){
var btn = document.createElement('button');
btn.id = "photoupload";
var t=document.createTextNode("ADD PHOTOS");
btn.appendChild(t);
this.addPhotoButton = btn;
var pb = document.getElementById('photobank');
pb.appendChild(this.addPhotoButton);
this.addPhotoButton.addEventListener("click", this.launchMediaManager(), false);
}
Photobank.prototype.launchMediaManager = function(){
alert("Launching Media Manager");
}
我做了明显错误的事吗?
答案 0 :(得分:11)
您正在调用该函数,而不是将该函数作为参数传递给addEventListener
。取下函数名称末尾的括号:
this.addPhotoButton.addEventListener("click", this.launchMediaManager, false);
答案 1 :(得分:1)
这是因为您正在调用该函数并将其结果设置为click事件的处理程序,而是将函数引用设置为处理程序。
this.addPhotoButton.addEventListener("click", this.launchMediaManager, false);