2017-04-12 34 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