Javascript事件侦听器在页面加载时启动,而不是单击事件

Javascript事件侦听器在页面加载时启动,而不是单击事件,javascript,Javascript,我正在玩Javascript并创建了一个类。在初始化该类时,我向某个div添加一个按钮,然后在单击该按钮时向该按钮添加一个事件侦听器。但是发生的事情是,当页面加载时,函数被触发,而不是当按钮被单击时。这是我的密码: function Photobank(){ this.photos; this.addPhotoButton; } Photobank.prototype.init = function(){ var btn

我正在玩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");
    }

我是否做了一些明显错误的事情?

您正在调用函数,而不是将函数作为参数传递给
addEventListener
。将括号从函数名称的末尾去掉:

this.addPhotoButton.addEventListener("click", this.launchMediaManager, false);

这是因为您正在调用函数并将其结果设置为click事件的处理程序,而不是将函数引用设置为处理程序

this.addPhotoButton.addEventListener("click", this.launchMediaManager, false);

可能是你的复制品,你会惊讶地发现这是多么频繁地被问到。@FelixKling是的,看起来这是我的问题。谢谢你的链接!如果您遇到
这个问题
:;)如果要添加参数,可以通过绑定它们:
root.addEventListener('click',myPrettyHandler.bind(null,event,arg1,…)来自: