2014-02-06 77 views
0

我玩弄Javascript和创建的类。在初始化这个类时,我向某个div添加一个按钮,然后为该按钮添加一个事件监听器以便点击该按钮。发生的事情是,当页面加载时,函数被触发,而不是点击按钮时。这是我的代码:的Javascript事件监听器射击页面加载,而不是单击事件

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

可能重复http://stackoverflow.com/questions/20970582/event-listener-in-javascript-not-firing-except - 因为,当最页面被加载) –

+2

你最好惊讶这是怎么经常被问到。 –

+0

@FelixKling是啊,貌似这是我的问题。感谢您的链接! – Jordan

回答

8

你调用该函数,而不是传递函数作为参数传递给addEventListener。以括号关闭函数名的结尾:

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

哦,哇。是的,我现在觉得很愚蠢。谢谢! – Jordan

1

这是因为你调用的功能并设置其结果作为处理程序click事件,而不是设置函数引用的处理程序。

this.addPhotoButton.addEventListener("click", this.launchMediaManager, false); 
[以JavaScript事件监听未击发除了当页面被加载用于](的