2017-04-12 44 views
1

我有一個對象,我想在初始化Object時將函數綁定到按鈕。JavaScript:在對象函數和綁定事件中使用這個對象

var MyClass = { 
    Click: function() { 
     var a = MyClass; // <---------------------- look here 
     a.Start(); 
    }, 
    Bind: function() { 
     var a = document.getElementById('MyButton'); 
     a.addEventListener('click', this.Click, false); //<---------- and here 
    }, 
    Init: function() { 
     this.Bind(); 
    } 
} 

所以,我是新的使用它,我不知道,如果對象可以這樣聲明(內Click()功能應該點擊一個按鈕後進行):

它是一個不好的做法?在這裏添加活動時,這可能是最好的方法?

編輯:fiddle

回答

0

首先你有一個語法錯誤。 getElementsById()應該是getElementById() - 否s。一旦你解決了這個問題,你有什麼工作,但請注意,它不是一個真正的類,而是一個對象。

如果你確實想創造這個作爲一個階級來維持的包含方法和變量的作用域,並創建新實例,你可以做這樣的:

var MyClass = function() { 
 
    var _this = this; 
 

 
    _this.click = function() { 
 
    _this.start(); 
 
    };  
 

 
    _this.start = function() { 
 
    console.log('Start...'); 
 
    } 
 
    
 
    _this.bind = function() { 
 
    var a = document.getElementById('MyButton'); 
 
    a.addEventListener('click', this.click, false); 
 
    }; 
 
    
 
    _this.init = function() { 
 
    _this.bind(); 
 
    }; 
 
    
 
    return _this; 
 
} 
 

 
new MyClass().init();
<button id="MyButton">Click me</button>

+0

它的工作:)你是什麼意思「也創建新的實例」?這是否意味着使用這段代碼我可以創建多個'MyClass()'對象,但是代碼有問題,無法完成?爲什麼? –

+0

沒錯。它不能在你之前的代碼中完成,因爲'MyClass'是一個對象。 –

+0

謝謝,它幫了我很多! –

0

事件偵聽器是最簡單,最好的,如果你想擁有,當用戶點擊一個按鈕執行一些.js文件的代碼使用jQuery,例如,你可以使用: https://api.jquery.com/click/

我不知道你對.js有多新,但是你應該看看關於JavaScript和jQuery的codecademy教程。

。點擊()演示:

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_event_click

+0

我可以用JQuery綁定它,但問題是在函數Click()後聲明對象。 –

+0

我看你已經修好了。 – 2017-04-12 23:15:09