Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将事件侦听器附加到类方法_Javascript_Class_Methods_Mouseevent - Fatal编程技术网

Javascript 将事件侦听器附加到类方法

Javascript 将事件侦听器附加到类方法,javascript,class,methods,mouseevent,Javascript,Class,Methods,Mouseevent,我试图通过类方法将事件侦听器添加到元素中。 你能告诉我我错过了什么,它不起作用了吗 class PumpBasic { constructor(_name) { this.name = _name; } Foo() { this.element = document.getElementById(this.name + "AutoManualSwitch"); this.element.addEventL

我试图通过类方法将事件侦听器添加到元素中。 你能告诉我我错过了什么,它不起作用了吗

class PumpBasic
{
    constructor(_name)
    {
        this.name = _name;
    }

    Foo() 
    {
        this.element = document.getElementById(this.name + "AutoManualSwitch");
        this.element.addEventListener('click', myFunction, false);
    }

    myFunction()
    {
        console.log("clicked");
    }

}

pump1 =new PumpBasic("pump1");

<input  id="pump1AutoManualSwitch" data-on="Manual" data-off="Auto" data-onstyle="primary"  type="checkbox" data-toggle="toggle" data-width="75" data-height="30">
类泵基础
{
构造函数(_名称)
{
this.name=\u name;
}
Foo()
{
this.element=document.getElementById(this.name+“AutoManualSwitch”);
this.element.addEventListener('click',myFunction,false);
}
myFunction()
{
控制台日志(“单击”);
}
}
pump1=新泵基础(“pump1”);

如果要将
myFunction
方法作为回调函数传递给addEventListener,则需要使用此函数引用它

您还需要将其绑定以使其正常工作。如果不绑定全局事件对象,则它会在调用时重新定义它

这应该起作用:

类泵基础
{
构造函数(_名称)
{
this.name=\u name;
this.myFunction=this.myFunction.bind(this)
}
Foo()
{
this.element=document.getElementById(this.name+“AutoManualSwitch”);
this.element.addEventListener('click',this.myFunction,false);
}
myFunction()
{
控制台日志(“单击”);
}
}
常量泵1=新泵基础(“泵1”);
pump1.Foo()

对不起,那是个打字错误。我编辑了它。代码仍然不起作用,我想给你一个提示。你不应该以大写字母开始你的方法。将
Foo
更改为
Foo
将有助于提高可读性。