Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 addEventListener don';不添加事件_Javascript_Html_Class_Oop_Events - Fatal编程技术网

javascript addEventListener don';不添加事件

javascript addEventListener don';不添加事件,javascript,html,class,oop,events,Javascript,Html,Class,Oop,Events,我有如下代码。我创建了名为“Car”的Javascript类,并在构造函数中将事件添加到html“”标记中。但这件事不会发生 谁能帮帮我吗 谢谢, A 功能车(型号、品牌){ this.model=模型; 这个品牌=品牌; document.getElementById('button').addEventListener('onclick',this.info); } //方法 Car.prototype.info=函数(){ 警报(“它是”+此.model); }; //定义龋齿 var车

我有如下代码。我创建了名为“Car”的Javascript类,并在构造函数中将事件添加到html“”标记中。但这件事不会发生

谁能帮帮我吗

谢谢, A

功能车(型号、品牌){
this.model=模型;
这个品牌=品牌;
document.getElementById('button').addEventListener('onclick',this.info);
}
//方法
Car.prototype.info=函数(){
警报(“它是”+此.model);
};
//定义龋齿
var车=新车(“RX7”、“马自达”);
//html中的Invoke方法
//car.info();
//第二条路
window.onload=函数(){
var车=新车(“RX7”、“马自达”);
};

单击我
事件应该是
单击
而不是
单击

要绑定上下文,请在事件处理程序函数引用上使用
bind(this)

功能车(型号、品牌){
this.model=模型;
这个品牌=品牌;
document.getElementById('button').addEventListener('click',this.info.bind(this));
//                                                 ^^^^^^^            ^^^^^^^^^^
}
//方法
Car.prototype.info=函数(){
警报(“它是”+此.model);
};
//定义龋齿
var车=新车(“RX7”、“马自达”);
//html中的Invoke方法
//car.info();
//第二条路
window.onload=函数(){
var车=新车(“RX7”、“马自达”);
};
点击我
@Tushar 非常感谢你。如果没有你的帮助,我不会这么做:-)

对于希望将所有内容都“更深入”到类中的人,我在@Tushar代码中准备了一些更改

但我不知道它是否在任何编程标准中都是一致的

功能车(型号、品牌){
this.model=模型;
这个品牌=品牌;
document.getElementById('button').addEventListener('click',this.info.bind(this));
}
//方法
Car.prototype.info=函数(){
警报(“它是”+此.model);
};
document.addEventListener('DOMContentLoaded',function(){
var车=新车(“RX7”、“马自达”);
});

点击
非常感谢:-)回答得好。我想把它作为“通用”搜索过滤器来做,它不需要太多的地方来添加代码。这就是我在构造函数中添加事件的原因。在第一个示例中,方法在一次clisk之后调用2次。原因是什么?第二个示例运行良好。@arrowman在第一个示例中,
Car
构造函数被调用两次,因此事件在同一元素上绑定两次,导致处理程序在单击时运行两次。我建议使用第二个例子。